SY 개발일지
article thumbnail
[백준 10986] 나머지 합 - Java 문제풀이
Java/문제풀이 2024. 5. 10. 13:36

문제 링크: https://www.acmicpc.net/problem/10986 문제수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오.즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) 쌍의 개수를 구해야 한다. 입력첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 106, 2 ≤ M ≤ 103)둘째 줄에 N개의 수 A1, A2, ..., AN이 주어진다. (0 ≤ Ai ≤ 109) 출력첫째 줄에 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 출력한다.풀이접근법어떠한 구간에 대해서 M으로 나누어 떨어져야 한다면, 처음 ~ 시작, 처음 ~ 끝에 대한 누적합에..

article thumbnail
[Java] 어노테이션(Annotation) 이란?
Java/자바와 Spring 2024. 5. 9. 16:09

Java 언어로 프로젝트를 하며 다음과 같이 어노테이션을 이용하여 어떠한 상황을 명세하는 경우가 많습니다. 특히 스프링을 이용해 프로젝트를 한다면 어노테이션을 통해 Controller나 Service등을 명시하여 빈으로 등록하여 사용합니다. 그렇다면 이러한 어노테이션은 무엇이고, 어떻게 작동하는 걸까요 ? 어노테이션이란 ?자바에서 어노테이션은 사전적 의미로 주석이라는 뜻을 가지고 있습니다. 자바의 어노테이션은 소스코드에 추가하여 사용할 수 있는 일종의 메타데이터입니다. 여기서 메타데이터란, 애플리케이션이 처리해야할 데이터가 아니라 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야하는지를 알려주기 위한 추가 정보입니다. JDK 1.5 버전 이상, 자바 8버전부터 사용 가능하며, 자바 어노테이션은 클래스 ..

article thumbnail
[백준 3151] 합이 0 - Java 문제풀이
Java/문제풀이 2024. 5. 9. 12:36

문제 링크: https://www.acmicpc.net/problem/3151 문제Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀가 가르칠 학생들에게는 큰 문제가 있었다. 코딩 실력이 좋으면 팀워크가 떨어지고, 팀워크가 좋을수록 코딩 실력이 떨어진다. 그리고 출전하고자 하는 대회는 코딩 실력과 팀워크 모두가 중요하다.Elly는 그녀가 가르칠 수 있는 모든 학생들의 코딩 실력을 알고 있다. 각각의 코딩 실력 Ai는 -10000부터 10000 사이의 정수로 표시되어 있다. 그녀는 팀워크와 코딩 실력이 모두 적절한 팀을 만들기 위해, 세 팀원의 코딩 실력의 합이 0이 되는 팀을 만들고자 한다. 이러한 조건 하..

article thumbnail
[백준 31501] DP(small) - Java 문제풀이
Java/문제풀이 2024. 5. 8. 15:11

문제 링크: https://www.acmicpc.net/problem/31501 문제이 문제는 DP (Large)와 문제의 수 제한, 질문의 수 제한, 문제의 난이도 제한이 다른 문제이다.DP는 DYNAMIC Porani의 약자이다.DYNAMIC한 포라니는 가능한 문제를 DYNAMIC하게 푸는 것을 좋아한다. DYNAMIC한 문제 풀이란 문제의 번호와 난이도가 모두 증가하도록 가능한 한 많이 푸는 것이다.방학을 맞은 포라니는 알고리즘 능력 향상을 위해 선배로부터 추천 문제 셋을 받았다. 나태한 포라니는 모든 문제를 풀고 싶지 않다. 만약 선배로부터 어떤 문제를 풀라는 지시를 받았을 때, 그 문제를 포함하여 DYNAMIC하게 문제를 풀었을 경우 몇 문제를 풀어야 하는지 알려주자. 입력첫 번째 줄에 문제의 ..

article thumbnail
[백준 6574] 새로운 과일 - Java 문제풀이
Java/문제풀이 2024. 5. 7. 20:44

문제 링크: https://www.acmicpc.net/problem/6574 문제상근이는 두 과일의 유전자를 합쳐, 새로운 과일을 만드는 작업을 하고 있다. 두 과일을 합치는 작업은 매우 어렵다. 만약, 성공을 하게 된다면 새로운 과일의 맛은 두 과일을 동시에 먹는 맛과 같을 것이다.사실 상근이는 이 작업을 시작하기 전에, 새로운 과일의 이름을 짓고 작업을 시작 한다. 물론, 사과(apple)와 배(pear)를 합친 과일을 apple-pear라고 불러도 되지만, 이 이름은 관심을 끌기에 적절하지 않는다.상근이는 두 과일의 이름을 부분 문자열로 포함하는 문자열 중, 가장 길이가 짧은 것을 새로운 과일의 이름으로 사용하려고 한다. 예를 들어, applear는 apple과 pear를 모두 포함한다. (APP..

article thumbnail
[백준 17490] 일감호에 다리 놓기 - Java 문제풀이
Java/문제풀이 2024. 5. 7. 14:54

문제 링크: https://www.acmicpc.net/problem/17490 문제학교의 홍보대사를 맡게 된 건덕이는 건국대학교의 모든 강의동을 신입생들에게 소개해야 한다.건국대학교 중앙에 위치한 일감호를 따라 한 바퀴를 돌며 모든 강의동을 소개하는 것이 그의 일이지만, 몇몇 구간들이 공사 중이어서 그 구간을 통해서는 갈 수 없는 상황이다. 급한대로 건덕이는 호수에 돌을 던져 징검다리를 놓아 길을 만들어보려고 한다.강의동은 일감호의 둘레에 따라 원형으로 배치돼 있으며, 강의동 양 옆의 강의동은 서로 이웃한다. 또, 원형으로 배치돼 있기 때문에 N개의 강의동이 있다면 N번째 강의동과 1번째 강의동은 서로 이웃한다.일감호 안에는 와우도라는 섬이 있다. 건덕이는 한 강의실에서 다른 모든 강의실로 이동할 수 ..

article thumbnail
[Spring] AOP(Aspect Oriented Programming)이란?
Java/자바와 Spring 2024. 5. 6. 16:33

스프링의 특징을 생각해보면 보통 DI와 IoC, 그리고 AOP를 주로 큰 특징으로 떠올립니다. 이번 포스팅에서는 AOP가 무엇인지에 대해 중점적으로 알아보도록 하겠습니다. AOP란?AOP(Aspect Oriented Programming)이란, 관점 지향 프로그래밍으로, 관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍입니다. 여기서 관점(Aspect)이란, 부가 기능과 그 적용처를 적용하고 합쳐서 모듈로 만든 것입니다.Java는 OOP(Object Oriented Programming) 언어로서, OOP 에서 모듈화의 핵심 단위는 클래스인 반면, AOP에서 모듈화의 단위는 관점 Aspect 입니다. 따라서 어떠한 행위의 이전 시점, 이후 시점, 해당 시점 등이 중요합니다. 이러한 Aspect는 여..

article thumbnail
[백준 14461] 소가 길을 건너간 이유 - Java 문제풀이
Java/문제풀이 2024. 5. 5. 14:23

문제 링크: https://www.acmicpc.net/problem/14461 문제소가 길을 건너는 이유는 그냥 길이 많아서이다. 존의 농장에는 길이 너무 많아서, 길을 건너지 않고서는 별로 돌아다닐 수가 없다.존의 농장에는 작은 정사각형 목초지가 N×N (3 ≤ N ≤ 100) 격자로 이루어져 있다. 농장의 바깥에는 높은 울타리가 있어서 소가 농장 밖으로 나갈 일은 없다. 이 농장에 사는 소 베시는 한 목초지에서 상하좌우로 인접한 다른 목초지로 이동할 수 있지만, 교통사고를 피하기 위해 차가 안 오는지 확인하고 길을 건너야 한다. 길을 건너는데는 T초 (0 ≤ T ≤ 1,000,000)가 걸린다.존이 베시에게 체스 대결을 신청했다. 베시는 북서쪽 끝에 있는 목초지에서 남동쪽 끝에 있는 존의 집으로 가..

article thumbnail
[Java] 가비지 컬렉션이란 ?
Java/자바와 Spring 2024. 5. 4. 19:31

가비지 컬렉션이란가비지 컬렉션이란 메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중 더 이상 필요없게 된 영역을 해제하는 기능입니다.  여기서 더 이상 필요없게 된 영역이란, 아래 그림과 같이 재할당 등의 사유로 어떤 변수도 가리키지 않게 된 영역을 의미합니다.  자바에서의 가비지 컬렉션가비지 컬렉션이란, 자바의 메모리 관리 방법 중 하나로, JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말합니다.자바에서는 가비지 컬렉터가 메모리 관리를 대신 해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할 수 있게 해주고, 개발자 입장에서 메모리 관리, 메모리 누수 문제에..