From 531ecaa6812206a1353584bdd6bfec8e00b3e135 Mon Sep 17 00:00:00 2001 From: basicprogram <103624272+basicprogram@users.noreply.github.com> Date: Sun, 26 Oct 2025 15:35:47 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[BOJ]=20=EB=B3=91=EC=82=AC=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=ED=95=98=EA=B8=B0=20/=20silver=202=20/=20130=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 가장 긴 증가하는 부분 수열이라는 알고리즘을 사용하는 문제인 것을 발견하고 가장 긴 증가하는 부분 수열에 관련된 문제를 풀면서 공부했고 그 내용을 기반으로 문제를 해결해 나갔습니다. dp배열은 2중 반복문을 사용했고 반복문을 진행하면서 조건을 걸어서 조건에 맞는 길이만큼 DP에 저장하는 방식으로 문제를 풀었습니다 (시간은 다른 알고리즘을 공부하는 시간까지 포함시켰습니다) --- ...\354\271\230\355\225\230\352\270\260.java" | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 "10\354\233\224/4\354\243\274\354\260\250/BOJ_18353_\353\263\221\354\202\254 \353\260\260\354\271\230\355\225\230\352\270\260/ohwootaek_18353_\353\263\221\354\202\254\353\260\260\354\271\230\355\225\230\352\270\260.java" diff --git "a/10\354\233\224/4\354\243\274\354\260\250/BOJ_18353_\353\263\221\354\202\254 \353\260\260\354\271\230\355\225\230\352\270\260/ohwootaek_18353_\353\263\221\354\202\254\353\260\260\354\271\230\355\225\230\352\270\260.java" "b/10\354\233\224/4\354\243\274\354\260\250/BOJ_18353_\353\263\221\354\202\254 \353\260\260\354\271\230\355\225\230\352\270\260/ohwootaek_18353_\353\263\221\354\202\254\353\260\260\354\271\230\355\225\230\352\270\260.java" new file mode 100644 index 0000000..14ff657 --- /dev/null +++ "b/10\354\233\224/4\354\243\274\354\260\250/BOJ_18353_\353\263\221\354\202\254 \353\260\260\354\271\230\355\225\230\352\270\260/ohwootaek_18353_\353\263\221\354\202\254\353\260\260\354\271\230\355\225\230\352\270\260.java" @@ -0,0 +1,56 @@ +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.util.Arrays; +import java.util.StringTokenizer; + +public class BOJ_18353_병사배치하기 { + static int N, H; + static int[] D; + static int[] input; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + StringTokenizer st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); + + D = new int[N]; + input = new int[N]; + + st = new StringTokenizer(br.readLine()); + for(int i = 0; i < N; i++) { + input[i] = Integer.parseInt(st.nextToken()); + } + + Arrays.fill(D, 1); + + int ans = 0; + for(int i = N - 2; i >= 0; i--) { + for(int j = N - 1; j > i; j--) { + if(input[i] > input[j]) { + D[i] = Math.max(D[i], D[j] + 1); + //D[i] = input[i]; + } + } + } + +// for(int i = 0; i < N; i++) { +// bw.write(D[i] + " "); +// } + + int max = Integer.MIN_VALUE; + for(int i = 0; i < N; i++) { + max = Math.max(max, D[i]); + } + + ans = N - max; + + bw.write(ans + "\n"); + + bw.flush(); + br.close(); + bw.close(); + } +} From 86c888ee91aa8dc1d7b39d7089028982ed0cba51 Mon Sep 17 00:00:00 2001 From: basicprogram <103624272+basicprogram@users.noreply.github.com> Date: Sun, 26 Oct 2025 15:43:48 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[BOJ]=20Game=20Addiction=20/=20silver=202?= =?UTF-8?q?=20/=2060=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 이전에는 주영님이 제출하신 코드를 참고하며 공부한 뒤, 그 내용을 바탕으로 문제를 풀었습니다. 주영님이 사용하신 방식(DP 접근법)을 기반으로 하니 훨씬 쉽게 해결할 수 있었습니다. 이 코드는 위와 왼쪽 방향의 값을 누적해서 더해 나가며 목표 좌표에 도달하면 탐색을 멈추고, 그 지점의 값을 최종 결과로 출력하는 방식입니다. --- .../ohwootaek_20152_gameaddiction.java" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 "10\354\233\224/4\354\243\274\354\260\250/BOJ_20152_Game Addiction/ohwootaek_20152_gameaddiction.java" diff --git "a/10\354\233\224/4\354\243\274\354\260\250/BOJ_20152_Game Addiction/ohwootaek_20152_gameaddiction.java" "b/10\354\233\224/4\354\243\274\354\260\250/BOJ_20152_Game Addiction/ohwootaek_20152_gameaddiction.java" new file mode 100644 index 0000000..8d0dda4 --- /dev/null +++ "b/10\354\233\224/4\354\243\274\354\260\250/BOJ_20152_Game Addiction/ohwootaek_20152_gameaddiction.java" @@ -0,0 +1,30 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ_20152_GameAddiction { + public static void main(String[] args) throws Exception{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + int N = Integer.parseInt(st.nextToken()); + int M = Integer.parseInt(st.nextToken()); + + long dp[][] = new long[N + 1][M + 1]; + + dp[1][1] = 1; + + for(int i = 1; i <= N; i++){ + for(int j = 1; j <= M; j++){ + if(i == 1 && j == 1){ + continue; + } + + dp[i][j] = (dp[i][j-1] + dp[i-1][j]+ dp[i-1][j-1]) % 1000000007; + } + } + + System.out.println(dp[N][M]%1000000007); + + br.close(); + } +}