문제https://www.acmicpc.net/problem/2292 접근 방법1. 벌집은 N 까지 갈때 최단 거리를 구하는 문제입니다.2. 따라서 1, (2~7), (8~19), (20~37) 의 최단거리는 각각 1, 2, 3, 4로 계차수열을 이룹니다.3. 증가하는 값이 6, 12, 18 로 6씩 증가하는 코드를 작성해주면 됩니다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private static ..
📌 Static 이란?스태틱(Static)은 고정이라는 뜻을 갖고 있습니다. Static 키워드를 사용하면 Static 변수와 Static 메서드를 만들 수 있는데 이 변수와 메서드는 메서드 영역에 올라가게 됩니다. 따라서 모든 곳에서 호출이 가능하고 이에 따라 속도도 빠르다는 특징을 갖고 있습니다. 하지만 Garbage Collector의 영역 밖에 존재하므로 Static을 자주 사용한다면 프로그램의 종료 시까지 메모리가 할당된 채로 존재하므로 메모리 누수가 발생된다는 단점이 있습니다. 만약 메모리 영역에 대해서 잘 모르신다면 밑의 글을 읽어보시는걸 추천드립니다. [Java] Java 메모리 영역자바의 메모리 영역 자바 프로그램을 실행 하게 되면 JVM은 OS(운영체제 ex. 윈도우, 유닉스, 리눅..
문제https://www.acmicpc.net/problem/14476 접근 방법1. left 배열은 i번째 자리에 arr[1] ~ arr[i] 까지 최대 공약수를 넣어줍니다.2. right 배열은 i 번째 자리에 arr[i+1] ~ arr[i] 까지 최대 공약수를 넣어줍니다.3. 따라서 어떤 수 i를 뺀 나머지에서 최대공약수를 구한다면 left[i-1]과 right[i+1]의 최대공약수를 구해주면 됩니다.4. 그렇게 구한 최대공약수로 i를 나누려 할때 나누어지면 안되고, 제일 큰 최대공약수를 저장해야 됩니다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Str..
문제https://www.acmicpc.net/problem/2231접근 방법1. N이 100일때 이 분해합은 86(86+8+6) 이 됩니다. 2. 결국 분해합을 구하려면 N보다 작은 수들로 이루어져 있는데 각 자리가 최대 9까지 나올수 있으므로 총 자리수 * 9 작은 값부터 N까지 완탐방식으로 구하면 됩니다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { private static BufferedReader br; private static StringBuilder sb; private static int N; private static int nLength; //..
문제https://www.acmicpc.net/problem/2164 접근 방법1. Queue를 활용하여 1~N 까지 카드를 넣어줍니다.2. 카드에서 한장을 버리고, 남은 카드가 한장이라면 그것이 답이고, 2장 이상이라면 앞에있는 카드를 뒤로 옮겨줍니다.3. 만약 N이 한장일 경우 Queue는 무한루프에 빠지게 되므로 N==1일때 예외 처리를 해줍니다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main { private static BufferedRead..
문제https://www.acmicpc.net/problem/2108 접근 방법1. 산술평균, 중앙값, 최빈값(같으면 2번째 작은값), 범위를 구하면 되는 문제이다.2. 카운팅 정렬을 만들고 풀어줍니다.3. 최빈값은 flag를 만들어 만약 뒤에 나온 값이 앞에 나온 최빈값이랑 같으면 변경해주고, flag를 다시 false로 바꾸면서 풀었습니다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static Buffere..
문제 1978번: 소수 찾기첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.www.acmicpc.net 접근 방법1. 소수 찾기 문제, 소수 구하기 문제 다 에라토스테네스의 체 를 통해서 미리 소수를 구해놓고 찾아주는 방식으로 풀었습니다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; priv..
문제 1966번: 프린터 큐여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에www.acmicpc.net 접근 방법1. 문제에서 나온 방식 그대로 구현하는 문제이다.2. 하지만 queue로 했을때는 인덱스를 알지 못하므로 LinkedList를 사용하였습니다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main { pri..
문제 1929번: 소수 구하기첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.www.acmicpc.net 접근 방법1. 소수를 미리 구해두기 위해서 에라토스테네스의 체를 이용하여 미리 소수를 찾아놓습니다.2. 범위를 탐색하며 소수가 있으면 해당하는 인덱스를 출력해줍니다. import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; priva..
문제 1920번: 수 찾기첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들www.acmicpc.net 접근 방법1. 완전탐색으로 풀려다 보니 100,000^2 시간 초과가 발생할것 입니다. 그래서 투포인터로 풀었습니다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { private static String..