From 2a0bdb5bfa01ab5880452ea229951f2d15bca4dc Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Fri, 27 Feb 2026 23:40:52 +0900 Subject: [PATCH 1/7] =?UTF-8?q?[Week08]=20BOJ=202531:=20=ED=9A=8C=EC=A0=84?= =?UTF-8?q?=EC=B4=88=EB=B0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 "weekly/week08/BOJ_2531_\355\232\214\354\240\204\354\264\210\353\260\245/JAEHEE25.java" diff --git "a/weekly/week08/BOJ_2531_\355\232\214\354\240\204\354\264\210\353\260\245/JAEHEE25.java" "b/weekly/week08/BOJ_2531_\355\232\214\354\240\204\354\264\210\353\260\245/JAEHEE25.java" new file mode 100644 index 0000000..e91122e --- /dev/null +++ "b/weekly/week08/BOJ_2531_\355\232\214\354\240\204\354\264\210\353\260\245/JAEHEE25.java" @@ -0,0 +1,55 @@ +package week08.BOJ_2531_회전초밥; + +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ2531 { + 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 d = Integer.parseInt(st.nextToken()); + int k = Integer.parseInt(st.nextToken()); + int c = Integer.parseInt(st.nextToken()); + + int[] plates = new int[N]; + for (int i = 0; i < N; i++) { + plates[i] = Integer.parseInt(br.readLine()); + } + + Map sushi = new HashMap<>(); + //처음 k개의 접시 + for (int i = 0; i < k; i++) { + sushi.put(plates[i], sushi.getOrDefault(plates[i], 0) + 1); + } + + int start = 0; + int end = k; + int answer = sushi.size(); + if (!sushi.containsKey(c)) answer++; + + while (start < N - 1) { + //이전 스시 빼기 + if (sushi.get(plates[start]) == 1) { //1개 남았다면 아예 삭제 + sushi.remove(plates[start]); + } else { + sushi.put(plates[start], sushi.get(plates[start]) - 1); + } + + if (end >= N) end %= N; //원형 벨트 + sushi.put(plates[end], sushi.getOrDefault(plates[end], 0) + 1); //다음 초밥 넣기 + + int cnt = sushi.size(); + if (!sushi.containsKey(c)) { + cnt++; + } + answer = Math.max(answer, cnt); + + start++; + end++; + + } + System.out.println(answer); + } +} From 3a9e11401b8bf37351c256df5c010bd597ab5ff6 Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Mon, 2 Mar 2026 15:26:39 +0900 Subject: [PATCH 2/7] =?UTF-8?q?[Week08]=20BOJ=2013549:=20=EC=88=A8?= =?UTF-8?q?=EB=B0=94=EA=BC=AD=EC=A7=883?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "weekly/week08/BOJ_13549_\354\210\250\353\260\224\352\274\255\354\247\2103/JAEHEE25.java" diff --git "a/weekly/week08/BOJ_13549_\354\210\250\353\260\224\352\274\255\354\247\2103/JAEHEE25.java" "b/weekly/week08/BOJ_13549_\354\210\250\353\260\224\352\274\255\354\247\2103/JAEHEE25.java" new file mode 100644 index 0000000..1cdd9f4 --- /dev/null +++ "b/weekly/week08/BOJ_13549_\354\210\250\353\260\224\352\274\255\354\247\2103/JAEHEE25.java" @@ -0,0 +1,47 @@ +package week08.BOJ_13549_숨바꼭질3; + +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ13549 { + static boolean[] visit; + 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 K = Integer.parseInt(st.nextToken()); //동생 + + int answer = Integer.MAX_VALUE; + visit = new boolean[100001]; + Queue queue = new LinkedList<>(); + queue.add(new Pos(N, 0)); + while (!queue.isEmpty()) { + Pos poll = queue.poll(); + visit[poll.x] = true; + + if (poll.x == K) { + answer = Math.min(answer, poll.time); + } + + if (check(poll.x + 1)) queue.add(new Pos(poll.x + 1, poll.time + 1)); + if (check(poll.x - 1)) queue.add(new Pos(poll.x - 1, poll.time + 1)); + if (check(poll.x * 2)) queue.add(new Pos(poll.x * 2, poll.time)); + } + System.out.println(answer); + } + + static boolean check(int value) { + return value >= 0 && value <= 100000 && !visit[value]; + } +} + +class Pos { + int x; + int time; + + Pos(int x, int time) { + this.x = x; + this.time = time; + } +} \ No newline at end of file From f3c0ce581231af0b578f40f2e293f859822cef7a Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Mon, 2 Mar 2026 16:32:37 +0900 Subject: [PATCH 3/7] =?UTF-8?q?[Week08]=20BOJ=2015989:=201,=202,=203=20?= =?UTF-8?q?=EB=8D=94=ED=95=98=EA=B8=B0=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- personal/JAEHEE25/BOJ/BOJ15988.java | 27 ++++++++++++++++ .../JAEHEE25.java" | 32 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 personal/JAEHEE25/BOJ/BOJ15988.java create mode 100644 "weekly/week08/BOJ_15989_1,2,3\353\215\224\355\225\230\352\270\2604/JAEHEE25.java" diff --git a/personal/JAEHEE25/BOJ/BOJ15988.java b/personal/JAEHEE25/BOJ/BOJ15988.java new file mode 100644 index 0000000..3ea5e5e --- /dev/null +++ b/personal/JAEHEE25/BOJ/BOJ15988.java @@ -0,0 +1,27 @@ +import java.util.*; +import java.lang.*; +import java.io.*; + +class Main { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + //dp + long[] dp = new long[1000001]; + dp[1] = 1; + dp[2] = 2; + dp[3] = 4; + for (int i = 4; i <= 1000000; i++) { + dp[i] = (dp[i - 3] + dp[i - 2] + dp[i - 1]) % 1_000_000_009; + } + + //정답 출력 + StringBuilder answer = new StringBuilder(); + int T = Integer.parseInt(br.readLine()); + for (int i = 0; i < T; i++) { + int t = Integer.parseInt(br.readLine()); + answer.append(dp[t] % 1_000_000_009).append("\n"); + } + System.out.println(answer); + } +} \ No newline at end of file diff --git "a/weekly/week08/BOJ_15989_1,2,3\353\215\224\355\225\230\352\270\2604/JAEHEE25.java" "b/weekly/week08/BOJ_15989_1,2,3\353\215\224\355\225\230\352\270\2604/JAEHEE25.java" new file mode 100644 index 0000000..032ab2c --- /dev/null +++ "b/weekly/week08/BOJ_15989_1,2,3\353\215\224\355\225\230\352\270\2604/JAEHEE25.java" @@ -0,0 +1,32 @@ +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ15989 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + //dp[i][j] = i를 만들 때 마지막 숫자가 j이고, 오름차순인 방법의 수 + int[][] dp = new int[10001][4]; + dp[1][1] = 1; //1 + dp[2][1] = 1; //1,1 + dp[2][2] = 1; //2 + dp[3][1] = 1; //1,1,1 + dp[3][2] = 1; //1,2 + dp[3][3] = 1; //3 + for (int i = 4; i <= 10000; i++) { + dp[i][1] = dp[i-1][1]; + dp[i][2] = dp[i-2][1] + dp[i-2][2]; + dp[i][3] = dp[i-3][1] + dp[i-3][2] + dp[i-3][3]; + } + + //정답 출력 + StringBuilder answer = new StringBuilder(); + int T = Integer.parseInt(br.readLine()); + for (int i = 0; i < T; i++) { + int t = Integer.parseInt(br.readLine()); + answer.append(dp[t][1] + dp[t][2] + dp[t][3]).append("\n"); + } + System.out.println(answer); + } +} \ No newline at end of file From ac8de6baa9a23301b0d7ef6e03914bdd74ce6778 Mon Sep 17 00:00:00 2001 From: seonghyeok cho <65901319+whqtker@users.noreply.github.com> Date: Tue, 3 Mar 2026 11:13:31 +0900 Subject: [PATCH 4/7] Fix week number calculation format in workflow --- .github/workflows/auto-weekly-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-weekly-issue.yml b/.github/workflows/auto-weekly-issue.yml index b96372b..8ef0a79 100644 --- a/.github/workflows/auto-weekly-issue.yml +++ b/.github/workflows/auto-weekly-issue.yml @@ -17,7 +17,7 @@ jobs: id: calc run: | # 현재 날짜 기준 주차 계산 (1월 1일 기준) - WEEK_NUM=$(date +%U) + WEEK_NUM=$(date +%-U) # 주차를 2자리로 포맷 (01, 02, ...) WEEK_NUM_FORMATTED=$(printf "%02d" $((WEEK_NUM + 1))) From c7ebb388f55c8203cb022677b93c4a965d54db55 Mon Sep 17 00:00:00 2001 From: seonghyeok cho <65901319+whqtker@users.noreply.github.com> Date: Tue, 3 Mar 2026 11:17:10 +0900 Subject: [PATCH 5/7] Fix week number calculation in workflow --- .github/workflows/auto-weekly-issue.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/auto-weekly-issue.yml b/.github/workflows/auto-weekly-issue.yml index 8ef0a79..62f051c 100644 --- a/.github/workflows/auto-weekly-issue.yml +++ b/.github/workflows/auto-weekly-issue.yml @@ -16,14 +16,12 @@ jobs: - name: Calculate week number and dates id: calc run: | - # 현재 날짜 기준 주차 계산 (1월 1일 기준) - WEEK_NUM=$(date +%-U) - # 주차를 2자리로 포맷 (01, 02, ...) - WEEK_NUM_FORMATTED=$(printf "%02d" $((WEEK_NUM + 1))) + WEEK_NUM=$(date +%U) + + WEEK_NUM_FORMATTED=$(printf "%02d" $((10#$WEEK_NUM + 1))) - # 이번 주 월요일과 일요일 계산 START_DATE=$(date -d "monday" +%Y.%m.%d) - END_DATE=$(date -d "sunday" +%Y.%m.%d) + END_DATE=$(date -d "monday + 6 days" +%Y.%m.%d) echo "week_number=$WEEK_NUM_FORMATTED" >> $GITHUB_OUTPUT echo "start_date=$START_DATE" >> $GITHUB_OUTPUT From 38e55348953cb3325698fea7a46d773fb4cd2e89 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 3 Mar 2026 06:11:01 +0000 Subject: [PATCH 6/7] =?UTF-8?q?[Week09]=20=EC=A3=BC=EC=B0=A8=EB=B3=84=20?= =?UTF-8?q?=EB=94=94=EB=A0=89=ED=86=A0=EB=A6=AC=20=EB=B0=8F=20README=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with GitHub Actions --- .../.gitkeep" | 1 + weekly/week09/BOJ_23088_Aging/.gitkeep | 1 + .../.gitkeep" | 1 + weekly/week09/README.md | 38 +++++++++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 "weekly/week09/BOJ_1446_\354\247\200\353\246\204\352\270\270/.gitkeep" create mode 100644 weekly/week09/BOJ_23088_Aging/.gitkeep create mode 100644 "weekly/week09/BOJ_25395_\354\273\244\353\204\245\355\213\260\353\223\234\354\271\264\354\213\244\355\227\230/.gitkeep" create mode 100644 weekly/week09/README.md diff --git "a/weekly/week09/BOJ_1446_\354\247\200\353\246\204\352\270\270/.gitkeep" "b/weekly/week09/BOJ_1446_\354\247\200\353\246\204\352\270\270/.gitkeep" new file mode 100644 index 0000000..0e30c04 --- /dev/null +++ "b/weekly/week09/BOJ_1446_\354\247\200\353\246\204\352\270\270/.gitkeep" @@ -0,0 +1 @@ +# 이번 주도 파이팅!🔥 \ No newline at end of file diff --git a/weekly/week09/BOJ_23088_Aging/.gitkeep b/weekly/week09/BOJ_23088_Aging/.gitkeep new file mode 100644 index 0000000..0e30c04 --- /dev/null +++ b/weekly/week09/BOJ_23088_Aging/.gitkeep @@ -0,0 +1 @@ +# 이번 주도 파이팅!🔥 \ No newline at end of file diff --git "a/weekly/week09/BOJ_25395_\354\273\244\353\204\245\355\213\260\353\223\234\354\271\264\354\213\244\355\227\230/.gitkeep" "b/weekly/week09/BOJ_25395_\354\273\244\353\204\245\355\213\260\353\223\234\354\271\264\354\213\244\355\227\230/.gitkeep" new file mode 100644 index 0000000..0e30c04 --- /dev/null +++ "b/weekly/week09/BOJ_25395_\354\273\244\353\204\245\355\213\260\353\223\234\354\271\264\354\213\244\355\227\230/.gitkeep" @@ -0,0 +1 @@ +# 이번 주도 파이팅!🔥 \ No newline at end of file diff --git a/weekly/week09/README.md b/weekly/week09/README.md new file mode 100644 index 0000000..0b78464 --- /dev/null +++ b/weekly/week09/README.md @@ -0,0 +1,38 @@ +# Week 09 (2026.03.09 ~ 2026.03.15) + +## 📝 이번 주 문제 + +### 문제 1: 커넥티드 카 실험 +- **플랫폼**: 백준 +- **문제 번호**: 25395 +- **난이도**: 골드 3 +- **링크**: [문제 링크](https://www.acmicpc.net/problem/25395) + +### 문제 2: 지름길 +- **플랫폼**: 백준 +- **문제 번호**: 1446 +- **난이도**: 실버 1 +- **링크**: [문제 링크](https://www.acmicpc.net/problem/1446) + +### 문제 3: Aging +- **플랫폼**: 백준 +- **문제 번호**: 23088 +- **난이도**: 골드 2 +- **링크**: [문제 링크](https://www.acmicpc.net/problem/23088) + +## 💡 폴더 구조 + +``` +week09/ +├── BOJ_25395_커넥티드카실험/ +├── BOJ_1446_지름길/ +└── BOJ_23088_Aging/ +``` + +## ✅ 진행 현황 + +- [ ] @sukangpunch +- [ ] @Hexeong +- [ ] @whqtker +- [ ] @JAEHEE25 +- [ ] @Gyuhyeok99 From 3ad461dfe771c04191181c979434b55c99cd89c6 Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Thu, 5 Mar 2026 20:11:16 +0900 Subject: [PATCH 7/7] =?UTF-8?q?[Week09]=20BOJ=201446:=20=EC=A7=80=EB=A6=84?= =?UTF-8?q?=EA=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "weekly/week09/BOJ_1446_\354\247\200\353\246\204\352\270\270/JAEHEE25.java" diff --git "a/weekly/week09/BOJ_1446_\354\247\200\353\246\204\352\270\270/JAEHEE25.java" "b/weekly/week09/BOJ_1446_\354\247\200\353\246\204\352\270\270/JAEHEE25.java" new file mode 100644 index 0000000..f71d820 --- /dev/null +++ "b/weekly/week09/BOJ_1446_\354\247\200\353\246\204\352\270\270/JAEHEE25.java" @@ -0,0 +1,40 @@ +package week09.BOJ_1446_지름길; + +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ1446 { + 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 D = Integer.parseInt(st.nextToken()); + int[][] shortcut = new int[N][3]; + + for (int i = 0; i < N; i++) { + st = new StringTokenizer(br.readLine()); + int start = Integer.parseInt(st.nextToken()); + int end = Integer.parseInt(st.nextToken()); + int dist = Integer.parseInt(st.nextToken()); + shortcut[i][0] = start; + shortcut[i][1] = end; + shortcut[i][2] = dist; + } + + int[] dp = new int[D+1]; + Arrays.fill(dp, Integer.MAX_VALUE); + dp[0] = 0; + + for (int i = 1; i <= D; i++) { + for (int j = 0; j < N; j++) { //지름길 확인 + if (shortcut[j][1] == i) { //해당 위치에 도착하는 지름길이 있을 경우 + dp[i] = Math.min(dp[i], Math.min(dp[i-1] + 1, dp[shortcut[j][0]] + shortcut[j][2])); + } else { // 없을 경우 + dp[i] = Math.min(dp[i], dp[i-1] + 1); + } + } + } + System.out.println(dp[D]); + } +}