From 85fce181d89477f9d7b1454ab922b61afe01df1c Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Wed, 11 Feb 2026 10:30:53 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[Week05]=20BOJ=206236:=20=EC=9A=A9=EB=8F=88?= =?UTF-8?q?=20=EA=B4=80=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...354\227\264_\354\225\225\354\266\225.java" | 46 +++++++++++++++++ .../JAEHEE25.java" | 51 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 "personal/JAEHEE25/PGS/\353\254\270\354\236\220\354\227\264_\354\225\225\354\266\225.java" create mode 100644 "weekly/week05/BOJ_6236_\354\232\251\353\217\210\352\264\200\353\246\254/JAEHEE25.java" diff --git "a/personal/JAEHEE25/PGS/\353\254\270\354\236\220\354\227\264_\354\225\225\354\266\225.java" "b/personal/JAEHEE25/PGS/\353\254\270\354\236\220\354\227\264_\354\225\225\354\266\225.java" new file mode 100644 index 0000000..964d6fe --- /dev/null +++ "b/personal/JAEHEE25/PGS/\353\254\270\354\236\220\354\227\264_\354\225\225\354\266\225.java" @@ -0,0 +1,46 @@ +import java.util.*; + +class Solution { + public int solution(String s) { + int answer = Integer.MAX_VALUE; + int len = 1; //단위 + int N = s.length(); + + while (len <= N) { + StringBuilder resultBuilder = new StringBuilder(); + StringBuilder wordBuilder = new StringBuilder(); + String prev = ""; + String word = ""; + int cnt = 0; + for (int i = 0; i <= N; i++) { + word = wordBuilder.toString(); + if (word.length() == len) { + if (prev.equals("")) { //맨 처음일 경우 prev에 저장 + prev = word; + cnt++; + } else if (prev.equals(word)) { //연속된 단어일 경우 개수 카운트 + cnt++; + } else { //새로운 단어일 경우 이전 단어 기록 + if (cnt <= 1) resultBuilder.append(prev); + else resultBuilder.append(cnt + prev); + prev = word; + cnt = 1; + } + wordBuilder = new StringBuilder(); //초기화 + } + if (i < N) wordBuilder.append(s.charAt(i)); + } + + //마지막 처리 + if (cnt <= 1) resultBuilder.append(prev); + else resultBuilder.append(cnt + prev); + resultBuilder.append(wordBuilder.toString()); //남은 글자들 + + //정답 구하기 + answer = Math.min(resultBuilder.length(), answer); + len++; + } + + return answer; + } +} diff --git "a/weekly/week05/BOJ_6236_\354\232\251\353\217\210\352\264\200\353\246\254/JAEHEE25.java" "b/weekly/week05/BOJ_6236_\354\232\251\353\217\210\352\264\200\353\246\254/JAEHEE25.java" new file mode 100644 index 0000000..7e956fd --- /dev/null +++ "b/weekly/week05/BOJ_6236_\354\232\251\353\217\210\352\264\200\353\246\254/JAEHEE25.java" @@ -0,0 +1,51 @@ +package week05.BOJ_6236_용돈관리; + +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ6236 { + public static void main(String[] args) throws IOException { + 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()); + int[] money = new int[N]; + int max = 0; + for (int i = 0; i < N; i++) { + money[i] = Integer.parseInt(br.readLine()); + max = Math.max(money[i], max); //최대 금액을 최솟값으로 설정 + } + + int answer = 0; + int left = max; + int right = 10000 * 100000; + while (left <= right) { + int K = (left + right) / 2; + + //결과 계산 + int result = getWithdrawCnt(money, K, M); + + if (M >= result) { + answer = K; + right = K - 1; + } else { + left = K + 1; + } + } + System.out.println(answer); + } + + static int getWithdrawCnt(int[] money, int K, int M) { + int withdrawCnt = 1; + int now = K; + for (int i = 0; i < money.length; i++) { + if (money[i] > now) { //모자라면 K원 인출 + withdrawCnt++; + now = K; + } + now -= money[i]; + } + return withdrawCnt; + } +} From 7c787b2e2fd1c2b2c6a7c134c8130297d419189b Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Thu, 12 Feb 2026 21:16:05 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[Week05]=20PGS:=20=EC=9A=94=EA=B2=A9=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "weekly/week06/PGS_\354\232\224\352\262\251\354\213\234\354\212\244\355\205\234/JAEHEE25.java" diff --git "a/weekly/week06/PGS_\354\232\224\352\262\251\354\213\234\354\212\244\355\205\234/JAEHEE25.java" "b/weekly/week06/PGS_\354\232\224\352\262\251\354\213\234\354\212\244\355\205\234/JAEHEE25.java" new file mode 100644 index 0000000..fed70ca --- /dev/null +++ "b/weekly/week06/PGS_\354\232\224\352\262\251\354\213\234\354\212\244\355\205\234/JAEHEE25.java" @@ -0,0 +1,24 @@ +package week06.PGS_요격시스템; + +import java.util.*; +class Solution { + public int solution(int[][] targets) { + int answer = 0; + Arrays.sort(targets, (o1, o2) -> o1[0] - o2[0]); + + int start = -1; //현재 요격 미사일의 범위 + int end = 100_000_001; + for (int i = 0; i < targets.length; i++) { + if (targets[i][0] >= end) { + answer++; + start = -1; + end = 100_000_001; + } + start = Math.max(start, targets[i][0]); + end = Math.min(end, targets[i][1]); + } + + answer++; + return answer; + } +} From 482c4fe00ba1f5a586b9f6991a4683e06a2eef3d Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Fri, 13 Feb 2026 18:46:56 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[Week05]=20BOJ=2014002:=20=EA=B0=80?= =?UTF-8?q?=EC=9E=A5=20=EA=B8=B4=20=EC=A6=9D=EA=B0=80=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EC=88=98=EC=97=B4=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 "weekly/week05/BOJ_14002_\352\260\200\354\236\245\352\270\264\354\246\235\352\260\200\355\225\230\353\212\224\353\266\200\353\266\204\354\210\230\354\227\2644/JAEHEE25.java" diff --git "a/weekly/week05/BOJ_14002_\352\260\200\354\236\245\352\270\264\354\246\235\352\260\200\355\225\230\353\212\224\353\266\200\353\266\204\354\210\230\354\227\2644/JAEHEE25.java" "b/weekly/week05/BOJ_14002_\352\260\200\354\236\245\352\270\264\354\246\235\352\260\200\355\225\230\353\212\224\353\266\200\353\266\204\354\210\230\354\227\2644/JAEHEE25.java" new file mode 100644 index 0000000..9181d79 --- /dev/null +++ "b/weekly/week05/BOJ_14002_\352\260\200\354\236\245\352\270\264\354\246\235\352\260\200\355\225\230\353\212\224\353\266\200\353\266\204\354\210\230\354\227\2644/JAEHEE25.java" @@ -0,0 +1,50 @@ +package week05.BOJ_14002_가장긴증가하는부분수열4; + +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ14002 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int N = Integer.parseInt(br.readLine()); + StringTokenizer st = new StringTokenizer(br.readLine()); + int[] arr = new int[N]; + for (int i = 0; i < N; i++) { + arr[i] = Integer.parseInt(st.nextToken()); + } + + int[] dp = new int[N]; + for (int i = 0; i < N; i++) { + dp[i] = 1; + for (int j = 0; j < i; j++) { + if (arr[j] < arr[i]) { + dp[i] = Math.max(dp[i], dp[j] + 1); + } + } + } + + StringBuilder answer = new StringBuilder(); + int max = 0; + for (int i = 0; i < N; i++) { + if (dp[i] > max) { + max = dp[i]; + } + } + answer.append(max).append("\n"); + + Stack stack = new Stack<>(); + for (int i = N - 1; i >= 0; i--) { + if (dp[i] == max) { + stack.push(arr[i]); + max--; + } + } + + while (!stack.isEmpty()) { + answer.append(stack.pop()).append(" "); + } + + System.out.println(answer); + } +} From e329d036f4ca1f047432594ff8ef012a3d4fdff9 Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Sat, 21 Feb 2026 00:12:16 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[Week05]=20BOJ=201781:=20=EC=BB=B5=EB=9D=BC?= =?UTF-8?q?=EB=A9=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 "weekly/week05/BOJ_1781_\354\273\265\353\235\274\353\251\264/JAEHEE25.java" diff --git "a/weekly/week05/BOJ_1781_\354\273\265\353\235\274\353\251\264/JAEHEE25.java" "b/weekly/week05/BOJ_1781_\354\273\265\353\235\274\353\251\264/JAEHEE25.java" new file mode 100644 index 0000000..bbbe95c --- /dev/null +++ "b/weekly/week05/BOJ_1781_\354\273\265\353\235\274\353\251\264/JAEHEE25.java" @@ -0,0 +1,43 @@ +package week05.BOJ_1781_컵라면; +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ1781 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int N = Integer.parseInt(br.readLine()); + int[][] works = new int[N][2]; //데드라인, 컵라면 수 + for (int i = 0; i < N; i++) { + StringTokenizer st = new StringTokenizer(br.readLine()); + works[i][0] = Integer.parseInt(st.nextToken()); + works[i][1] = Integer.parseInt(st.nextToken()); + } + + Arrays.sort(works, (o1, o2) -> { + if (o1[0] == o2[0]) return o2[1] - o1[1]; + return o1[0] - o2[0]; + }); + + PriorityQueue pq = new PriorityQueue<>(); //푼 문제의 컵라면 수 저장 + for (int i = 0; i < N; i++) { + + //pq 사이즈 == 푼 문제 수 == 사용한 시간과 데드라인 시간 비교 + if (pq.size() < works[i][0]) { + pq.offer(works[i][1]); + } else { + if (pq.peek() < works[i][1]) { //기존에 풀었던 문제의 컵라면 수보다 크면 교체 + pq.poll(); + pq.offer(works[i][1]); + } + } + } + + //출력 + int answer = 0; + while (!pq.isEmpty()) { + answer += pq.poll(); + } + System.out.println(answer); + } +} From c09e3f7731799168cd345e36be83a624ae931d57 Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Tue, 24 Feb 2026 16:30:36 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[Week06]=20BOJ=202580:=20=EC=8A=A4=EB=8F=84?= =?UTF-8?q?=EC=BF=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 "weekly/week06/BOJ_2580_\354\212\244\353\217\204\354\277\240/JAEHEE25.java" diff --git "a/weekly/week06/BOJ_2580_\354\212\244\353\217\204\354\277\240/JAEHEE25.java" "b/weekly/week06/BOJ_2580_\354\212\244\353\217\204\354\277\240/JAEHEE25.java" new file mode 100644 index 0000000..8b0b56e --- /dev/null +++ "b/weekly/week06/BOJ_2580_\354\212\244\353\217\204\354\277\240/JAEHEE25.java" @@ -0,0 +1,80 @@ +package week06.BOJ_2580_스도쿠; +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ2580 { + static int N = 9; + static int[][] board; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + board = new int[N][N]; + for (int i = 0; i < N; i++) { + StringTokenizer st = new StringTokenizer(br.readLine()); + for (int j = 0; j < N; j++) { + board[i][j] = Integer.parseInt(st.nextToken()); + } + } + sudoku(0, 0); + } + + static void sudoku(int x, int y) { + if (y == N) { //하나의 행 모두 확인 + sudoku(x + 1, 0); //다음 행으로 이동 + return; + } + + if (x == N) { //모든 칸 확인 -> 출력 + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < N; i++){ + for(int j = 0; j < N; j++){ + sb.append(board[i][j]).append(' '); + } + sb.append("\n"); + } + System.out.println(sb); + System.exit(0); //하나만 출력해야하기 때문에 시스템 종료 + } + + if (board[x][y] == 0) { //빈칸일 경우 + for (int num = 1; num <= N; num++) { //1~9 중 가능한 수 찾기 + if (checkPossible(x, y, num)) { + board[x][y] = num; //가능한 수 빈칸에 넣기 + sudoku(x, y + 1); //다음 칸 확인 + board[x][y] = 0; //다시 빈 칸으로 처리 + } + } + } else { //빈칸이 아닐 경우 다음 칸 확인 + sudoku(x, y + 1); + } + } + + static boolean checkPossible(int x, int y, int value) { //value가 있는지 검사 + //행 검사 + for (int i = 0; i < N; i++) { + if (board[x][i] == value) { + return false; + } + } + + //열 검사 + for (int i = 0; i < N; i++) { + if (board[i][y] == value) { + return false; + } + } + + //정사각형 검사 + int sx = (x / 3) * 3; + int sy = (y / 3) * 3; + for (int i = sx; i < sx + 3; i++) { + for (int j = sy; j < sy + 3; j++) { + if (board[i][j] == value) { + return false; + } + } + } + return true; + } + +} From 41e4a36c3a77d5984593e36b355ecf2ee74ac1ef Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Tue, 24 Feb 2026 16:30:47 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[Week06]=20BOJ=2017070:=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=B4=ED=94=84=EC=98=AE=EA=B8=B0=EA=B8=B01?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 "weekly/week06/BOJ_17070_\355\214\214\354\235\264\355\224\204\354\230\256\352\270\260\352\270\2601/JAEHEE25.java" diff --git "a/weekly/week06/BOJ_17070_\355\214\214\354\235\264\355\224\204\354\230\256\352\270\260\352\270\2601/JAEHEE25.java" "b/weekly/week06/BOJ_17070_\355\214\214\354\235\264\355\224\204\354\230\256\352\270\260\352\270\2601/JAEHEE25.java" new file mode 100644 index 0000000..e181834 --- /dev/null +++ "b/weekly/week06/BOJ_17070_\355\214\214\354\235\264\355\224\204\354\230\256\352\270\260\352\270\2601/JAEHEE25.java" @@ -0,0 +1,63 @@ +package week06.BOJ_17070_파이프옮기기1; + +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ17070 { + static final int WALL = 1; + static int answer = 0; + static int N; + static int[][] house; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + house = new int[N][N]; + for (int i = 0; i < N; i++) { + StringTokenizer st = new StringTokenizer(br.readLine()); + for (int j = 0; j < N; j++) { + house[i][j] = Integer.parseInt(st.nextToken()); + } + } + move(0, 1, 'H'); //0,1에서 시작 + System.out.println(answer); + } + + static void move(int x, int y, char dir) { + //각 dir에 따라 갈 방법이 없으면 return + if (dir == 'H' || dir == 'V') { + if (!isPossible(x, y) || house[x][y] == WALL) { + return; + } + } else { + if (!isPossible(x, y) || !isPossible(x-1, y) || !isPossible(x, y-1) || + house[x][y] == WALL || house[x-1][y] == WALL || house[x][y-1] == WALL) { + return; + } + } + + if (x == N - 1 && y == N - 1) { //도착 + answer++; + return; + } + + if (dir == 'H') { //가로 이동 + move(x, y+1, 'H'); //1번 + move(x+1, y+1, 'D'); //2번 + + } else if (dir == 'V') { //세로 이동 + move(x+1, y, 'V'); //1번 + move(x+1, y+1, 'D'); //2번 + + } else { //대각선 이동 + move(x, y+1, 'H'); //1번 + move(x+1, y, 'V'); //2번 + move(x+1, y+1, 'D'); //3번 + } + + } + + static boolean isPossible(int x, int y) { + return x >= 0 && x < N && y >= 0 && y < N; + } +}