Computer Science/Algorithms
-
문제 N 미만인 소수 a와 b의 합이 N이 되는 경우의 수를 구해야 하는데, 예제에서 알 수 있듯 a와 b는 같은 수가 될 수 있다. 예를 들면 10 미만의 소수는 {2, 3, 5, 7}이 있고 {3, 7}, {5, 5}의 합이 10이 되므로 골드바흐 파티션의 개수는 2가 된다. 코드 문제를 처음 봤을 때 시간제한 0.5초를 보고 설마 했는데, 역시나 첫 시도는 시간초과가 발생했다. 소수의 합이 N이 되는 경우를 브루트 포스 방식으로 탐색했기 때문이다. 당연한 결과 😂 두 번째 시도는 `LinkedHashSet`에 소수를 저장한 뒤 조건에 맞는 경우만 count를 증가시키는 방법을 사용했다. static LinkedHashSet primes = new LinkedHashSet(); public stati..
[백준/Java] #17103 골드바흐 파티션문제 N 미만인 소수 a와 b의 합이 N이 되는 경우의 수를 구해야 하는데, 예제에서 알 수 있듯 a와 b는 같은 수가 될 수 있다. 예를 들면 10 미만의 소수는 {2, 3, 5, 7}이 있고 {3, 7}, {5, 5}의 합이 10이 되므로 골드바흐 파티션의 개수는 2가 된다. 코드 문제를 처음 봤을 때 시간제한 0.5초를 보고 설마 했는데, 역시나 첫 시도는 시간초과가 발생했다. 소수의 합이 N이 되는 경우를 브루트 포스 방식으로 탐색했기 때문이다. 당연한 결과 😂 두 번째 시도는 `LinkedHashSet`에 소수를 저장한 뒤 조건에 맞는 경우만 count를 증가시키는 방법을 사용했다. static LinkedHashSet primes = new LinkedHashSet(); public stati..
2024.03.09 -
문제 코드 시간 초과 때문에 여러 번 시도한 문제다ㅠㅠ 처음 작성했던 코드는 다음과 같다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); StringTokenizer st1 = new StringTokenizer(br.readLine(), " "); StringTokenizer st2 = new StringTokenizer(br.readLine(), " "); ArrayList list = new ArrayList(); for (int i = 0; i < N; i++) { if..
[백준/Java] #24511 queuestack - 시간초과 해결문제 코드 시간 초과 때문에 여러 번 시도한 문제다ㅠㅠ 처음 작성했던 코드는 다음과 같다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); StringTokenizer st1 = new StringTokenizer(br.readLine(), " "); StringTokenizer st2 = new StringTokenizer(br.readLine(), " "); ArrayList list = new ArrayList(); for (int i = 0; i < N; i++) { if..
2024.03.06 -
문제 코드 처음에 `Deque`을 `LinkedList`로 구현했다가 메모리 초과 문제가 발생했고, `ArrayDeque`으로 바꾸니 바로 풀 수 있었다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); Deque d = new ArrayDeque(); int[] arr = new int[N]; StringTokenizer st = new StringTokenizer(br.readLine(), " "); for (int i = 0; i < N; i++) { arr[i] = Int..
[백준/Java] #2346 풍선 터뜨리기 - 메모리 초과 해결 (feat. LinkedList vs ArrayDeque)문제 코드 처음에 `Deque`을 `LinkedList`로 구현했다가 메모리 초과 문제가 발생했고, `ArrayDeque`으로 바꾸니 바로 풀 수 있었다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); Deque d = new ArrayDeque(); int[] arr = new int[N]; StringTokenizer st = new StringTokenizer(br.readLine(), " "); for (int i = 0; i < N; i++) { arr[i] = Int..
2024.03.05 -
문제 코드 처음에 작성한 코드는 문제에서 말한 그대로 풀이를 한 방식이었는데, 숫자가 커지니 메모리 초과가 발생했다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine()); boolean[] arr = new boolean[N]; for (int i = 1; i
[백준/Java] #13909 창문 닫기 - 메모리 초과 해결문제 코드 처음에 작성한 코드는 문제에서 말한 그대로 풀이를 한 방식이었는데, 숫자가 커지니 메모리 초과가 발생했다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine()); boolean[] arr = new boolean[N]; for (int i = 1; i
2024.03.01 -
문제 코드 public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); BigInteger a = getValue(); BigInteger b = getValue(); bw.write(gcd(a, b)); bw.close(); } static BigInteger getValue() throws IOException { int N = Integer...
[백준/Java] #2824 최대공약수문제 코드 public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); BigInteger a = getValue(); BigInteger b = getValue(); bw.write(gcd(a, b)); bw.close(); } static BigInteger getValue() throws IOException { int N = Integer...
2024.02.20 -
문제 코드 처음 시도했을 때 시간 초과로 실패했다. import java.io.*; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.valueOf(br.readLine()); int[] nums = getNums(n, br); int m = Integer.valu..
[백준/Java] #10816 숫자 카드 2 - 시간초과 문제 해결문제 코드 처음 시도했을 때 시간 초과로 실패했다. import java.io.*; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.valueOf(br.readLine()); int[] nums = getNums(n, br); int m = Integer.valu..
2024.02.12 -
문제 코드 처음 작성했던 코드는 판별할 숫자를 2부터 증가하는 정수의 배수일 경우 소수가 아닌 것으로 판단하는 단순한 코드였다. 소수 여부를 판별하는 것은 어렵지 않지만, 계속해서 시간초과가 뜨는 바람에 다른 방식을 생각해야 했다. import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String[] s = br.read..
[백준/Java] #1929 소수 구하기 - 시간초과 문제 해결문제 코드 처음 작성했던 코드는 판별할 숫자를 2부터 증가하는 정수의 배수일 경우 소수가 아닌 것으로 판단하는 단순한 코드였다. 소수 여부를 판별하는 것은 어렵지 않지만, 계속해서 시간초과가 뜨는 바람에 다른 방식을 생각해야 했다. import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String[] s = br.read..
2024.02.10