From e021e6efec2746b66d56de21bacebb756828da2a Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Wed, 19 Feb 2025 16:41:32 +0900 Subject: [PATCH 01/15] pull request test --- pullrequesttest.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pullrequesttest.java diff --git a/pullrequesttest.java b/pullrequesttest.java new file mode 100644 index 0000000..e69de29 From b1d52a67745fb5f78a8577eef1c828475d425671 Mon Sep 17 00:00:00 2001 From: JHLEE325 <82587652+JHLEE325@users.noreply.github.com> Date: Wed, 19 Feb 2025 16:46:46 +0900 Subject: [PATCH 02/15] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 90 ++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 15 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e69911a..ace0fe8 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,15 +1,75 @@ -- closed #000 - -### Week 00 (00.00.00.) -| Category | Title | Link | -| :------: | :---: | :--: | -| | | ๐Ÿ”— | -| | | ๐Ÿ”— | -| | | ๐Ÿ”— | -| | | ๐Ÿ”— | -| | | ๐Ÿ”— | -
- -``` -To. Reviewers -``` +# ๐Ÿš€ ์‹ธํ”ผ 15๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” 5์ฃผ์ฐจ [์ด์ค€ํฌ] + +## ๐Ÿ“Œ ๋ฌธ์ œ ํ’€์ด ๊ฐœ์š” +- ์ด๋ฒˆ PR์—์„œ๋Š” ๋‹ค์Œ 5๋ฌธ์ œ์˜ ํ’€์ด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. +- ๊ฐ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ’€์ด ๊ณผ์ •๊ณผ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. +--- + +## โœ… ๋ฌธ์ œ ํ•ด๊ฒฐ ์—ฌ๋ถ€ + + - [x] **๋ฌธ์ œ 1** + - [x] **๋ฌธ์ œ 2** + - [ ] **๋ฌธ์ œ 3** + - [x] **๋ฌธ์ œ 4** + - [ ] **๋ฌธ์ œ 5** + +--- + +## ๐Ÿ’ก ํ’€์ด ๋ฐฉ๋ฒ• +### ๋ฌธ์ œ 1: ๋ฌธ์ œ ์ด๋ฆ„ +(๋ฌธ์ œ ์ด๋ฆ„์€ ํ˜„์žฌ ๋ฌธ์ œ์— ๋งž๊ฒŒ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”! ๋ฐ”๊พธ์‹œ๊ณ  ์ด ๋ฌธ์žฅ์„ ์ง€์›Œ์ฃผ์„ธ์š”.) + +**๋ฌธ์ œ ๋‚œ์ด๋„** + + + +**๋ฌธ์ œ ์œ ํ˜•** + + + + **์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ํ’€์ด** + + +--- + + + +### ๋ฌธ์ œ 2: ๋ฌธ์ œ ์ด๋ฆ„ + **๋ฌธ์ œ ์œ ํ˜•** + + + + **์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ํ’€์ด** + + + +--- +### ๋ฌธ์ œ 3: ๋ฌธ์ œ ์ด๋ฆ„ + **๋ฌธ์ œ ์œ ํ˜•** + + + + + + + **์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ํ’€์ด** + + +--- +### ๋ฌธ์ œ 4: ๋ฌธ์ œ ์ด๋ฆ„ + **๋ฌธ์ œ ์œ ํ˜•** + + + + **์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ํ’€์ด** + + +--- +### ๋ฌธ์ œ 5: ๋ฌธ์ œ ์ด๋ฆ„ + **๋ฌธ์ œ ์œ ํ˜•** + + + + **์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ํ’€์ด** + + From fd3b886a85e7174254a6bba816fffacd0db9d9ef Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Sun, 23 Feb 2025 17:21:45 +0900 Subject: [PATCH 03/15] =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=92=80=EC=9D=B4?= =?UTF-8?q?=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BOJ1205.java | 62 ++++++++++++++++++++++++++++++++++++++++ BOJ1244.java | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++ BOJ20125.java | 70 +++++++++++++++++++++++++++++++++++++++++++++ BOJ25757.java | 34 ++++++++++++++++++++++ BOJ4659.java | 67 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 311 insertions(+) create mode 100644 BOJ1205.java create mode 100644 BOJ1244.java create mode 100644 BOJ20125.java create mode 100644 BOJ25757.java create mode 100644 BOJ4659.java diff --git a/BOJ1205.java b/BOJ1205.java new file mode 100644 index 0000000..e8e0701 --- /dev/null +++ b/BOJ1205.java @@ -0,0 +1,62 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.StringTokenizer; + +public class Main { + + public static class rank { // ๋ณ€์ˆ˜๋“ค์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค + int score; + int index; + + public rank(int score, int index) { + this.score = score; + this.index = index; + } + } + + 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 taesoo = Integer.parseInt(st.nextToken()); + int P = Integer.parseInt(st.nextToken()); + StringBuilder sb = new StringBuilder(); + if(N==0) { // ๋žญํ‚น์ด ๋น„์–ด์žˆ๋Š”๊ฒฝ์šฐ ๋ฌด์กฐ๊ฑด 1๋“ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ + sb.append("1"); + } + else { + LinkedList list = new LinkedList<>(); // ๋žญํฌ ํƒ€์ž…์˜ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ + st = new StringTokenizer(br.readLine()); + for(int i=0;i() { // ๋ฆฌ์ŠคํŠธ๋ฅผ ์Šค์ฝ”์–ด ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ + @Override + public int compare(rank o1, rank o2) { + return o2.score-o1.score; + } + }); + + if(list.indexOf(r)+1>P) { // ํƒœ์ˆ˜์˜ ๋“ฑ์ˆ˜๊ฐ€ ๋žญํ‚น๋ฒ”์œ„ ๋ฐ–์ธ ๊ฒฝ์šฐ + sb.append("-1"); + } + else { + for(int i=0;i<=list.indexOf(r);i++) { // ํƒœ์ˆ˜์˜ ๋“ฑ์ˆ˜๊ฐ€ ๋žญํ‚น๋ฒ”์œ„ ์•ˆ์ธ ๊ฒฝ์šฐ + if(list.get(i).score==r.score) { // ํƒœ์ˆ˜์™€ ๋™์ ์ด ์žˆ๋Š”์ง€ ์ฐพ์•„์„œ + sb.append(list.indexOf(list.get(i))+1); // ํƒœ์ˆ˜๋Š” ๋™์ ์ธ ๊ฒฝ์šฐ ๊ฐ€์žฅ ํ›„์ˆœ์œ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ์•ž์˜ ๋“ฑ์ˆ˜ ์ถœ๋ ฅ + break; + } + } + } + } + + System.out.println(sb); + + + } + +} diff --git a/BOJ1244.java b/BOJ1244.java new file mode 100644 index 0000000..b6853b5 --- /dev/null +++ b/BOJ1244.java @@ -0,0 +1,78 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class Main { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + int num = Integer.parseInt(st.nextToken())+1; + boolean[] onoff = new boolean[num]; + + st = new StringTokenizer(br.readLine()); + for (int i = 1; i < num; i++) { + int chk = Integer.parseInt(st.nextToken()); + if (chk == 1) + onoff[i] = true; + } + + int peoplenum = Integer.parseInt(br.readLine()); + + for (int i = 0; i < peoplenum; i++) { + st = new StringTokenizer(br.readLine()); + + int sex = Integer.parseInt(st.nextToken()); + int idx = Integer.parseInt(st.nextToken()); + + if (sex == 1) { + int count = 1; + while (idx * count < num) { + onoff[idx * count] = !onoff[idx * count]; + count++; + } + } + + else { + int count = 1; + onoff[idx] = !onoff[idx]; + while (true) { + if (idx - count >= 1 && idx + count < num) { + if (onoff[idx - count] == onoff[idx + count]) { + onoff[idx - count] = !onoff[idx - count]; + onoff[idx + count] = !onoff[idx + count]; + } else { + break; + } + } else { + break; + } + count++; + } + + } + } + + StringBuilder sb = new StringBuilder(); + int count = 0; + for (int i = 1; i < num; i++) { + if(onoff[i]) { + sb.append("1 "); + } + else { + sb.append("0 "); + } + count++; + + if(count==20) { + sb.append("\n"); + count=0; + } + } + + System.out.println(sb); + + } + +} diff --git a/BOJ20125.java b/BOJ20125.java new file mode 100644 index 0000000..1fd9d57 --- /dev/null +++ b/BOJ20125.java @@ -0,0 +1,70 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class Main { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + int num = Integer.parseInt(st.nextToken()); + + char[][] cookie = new char[num][num]; + for (int i = 0; i < num; i++) { + cookie[i] = br.readLine().toCharArray(); // ์ž…๋ ฅ์˜ ๊ฐ ์นธ์—์„œ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•œ์ค„์”ฉ ๋ฐ›์•„์„œ charํ˜• ์ด์ค‘๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ + } + + int heartx = 0, hearty = 0; + boolean findheart = false; + for (int i = 0; i < num; i++) { // ๋ฐฐ์—ด์„ 0,0์—์„œ ์ฐพ์•„๊ฐ€๋ฉฐ ์ฟ ํ‚ค๊ฐ€ ์ฒ˜์Œ ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ๊ณณ์„ ์ฐพ์Œ -> ๊ทธ๊ณณ์ด ์ฟ ํ‚ค์˜ ๋จธ๋ฆฌ์ด๊ณ  ํ•œ์นธ ์•„๋ž˜๊ฐ€ ์‹ฌ์žฅ + for (int j = 0; j < num; j++) { + if (cookie[i][j] == '*') { + findheart = true; + heartx = j; + hearty = i + 1; + } + } + if (findheart) { + break; + } + } + int larm = 0, rarm = 0, lleg = 0, rleg = 0, back = 0; + + for(int i=0;i hash = new HashMap<>(); // ํ•œ ๋ฒˆ ๊ฒŒ์ž„ํ•œ ํ”Œ๋ ˆ์ด์–ด์™€๋Š” ๋‹ค์‹œ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์‹œ๋งต ์‚ฌ์šฉ + + for (int i = 0; i < num; i++) { + hash.put(br.readLine(), null); + } + + int length = hash.size(); + + switch (game) { // ๊ฒŒ์ž„์— ํ•„์š”ํ•œ ์ธ์›์€ 2,3,4 ์ด์ง€๋งŒ ์ž„์Šค๊ฐ€ ์ฐธ์—ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1,2,3์œผ๋กœ ๋‚˜๋ˆ” + case "Y": + System.out.println(length / 1); + break; + case "F": + System.out.println(length / 2); + break; + case "O": + System.out.println(length / 3); + break; + } + } + +} \ No newline at end of file diff --git a/BOJ4659.java b/BOJ4659.java new file mode 100644 index 0000000..00cd20f --- /dev/null +++ b/BOJ4659.java @@ -0,0 +1,67 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class Main { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringBuilder sb = new StringBuilder(); + while(true) { + String str = br.readLine(); + boolean hasmo = false; // ๊ทœ์น™ 1 : ๋ชจ์Œ์ด ํ•˜๋‚˜ ์ด์ƒ ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•จ์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜ + char[] moem = {'a','e','i','u','o'}; // ๋ชจ์Œ์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์„ ์–ธ + int seqcount=0; // ๊ทœ์น™ 2 : 3์—ฐ์†์˜ ๋ชจ์Œ, ์ž์Œ์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜ + boolean sameduple = false; // ๊ทœ์น™ 3 : ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ์—ฐ์†์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜ + if(str.equals("end")) { + break; + } + + sb.append("<"+str+"> "); // ์ถœ๋ ฅ ํฌ๋งท์— ๋งก๊ฒŒ ๋งŒ๋“ฌ + + char[] strchar = str.toCharArray(); // ํ•œ๊ธ€์ž์”ฉ ํ™•์ธํ•˜๊ธฐ์œ„ํ•ด ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ + + for(int i=0;i0) { // ์ž์Œ ์ผ๋•Œ๋Š” seqcount๊ฐ€ ์Œ์ˆ˜๋กœ ๋‚ด๋ ค๊ฐ + seqcount=0; + } + seqcount--; + } + + if(i+12||sameduple) { // ํ•œ ๊ธ€์ž์˜ ๊ฒ€์ฆ์ด ๋๋‚ฌ์„ ๋•Œ ์ด๋ฏธ ๊ทœ์น™์— ์–ด๊ธ‹๋‚˜๋ฉด ํƒˆ์ถœ + break; + } + } + + if(Math.abs(seqcount)<3&&!sameduple&&hasmo) { // ๋ชจ๋“  ๊ทœ์น™์— ๋ถ€ํ•ฉํ•˜๋ฉด + sb.append("is acceptable.\n"); + } + else { + sb.append("is not acceptable.\n"); // ๊ทœ์น™์— ์–ด๊ธ‹๋‚˜๋ฉด + } + + } + System.out.println(sb); + } + +} \ No newline at end of file From 2436dc1a501f60bfd87ea37d7d8d8f36365ead2c Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Tue, 4 Mar 2025 21:01:03 +0900 Subject: [PATCH 04/15] =?UTF-8?q?=EC=A3=BC=EC=B0=A8=20=ED=8F=B4=EB=8D=94?= =?UTF-8?q?=ED=99=94,=206=EC=A3=BC=EC=B0=A8=20=EB=AC=B8=EC=A0=9C=ED=92=80?= =?UTF-8?q?=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BOJ1205.java => week5/BOJ1205.java | 1 + BOJ1244.java => week5/BOJ1244.java | 20 ++++++------ BOJ20125.java => week5/BOJ20125.java | 1 + BOJ4659.java => week5/BOJ4659.java | 1 + BOJ25757.java => week5/Main.java | 1 + week6/BOJ1094.java | 19 +++++++++++ week6/BOJ11053.java | 40 +++++++++++++++++++++++ week6/BOJ15651.java | 40 +++++++++++++++++++++++ week6/BOJ6603.java | 49 ++++++++++++++++++++++++++++ 9 files changed, 162 insertions(+), 10 deletions(-) rename BOJ1205.java => week5/BOJ1205.java (96%) rename BOJ1244.java => week5/BOJ1244.java (59%) rename BOJ20125.java => week5/BOJ20125.java (95%) rename BOJ4659.java => week5/BOJ4659.java (96%) rename BOJ25757.java => week5/Main.java (95%) create mode 100644 week6/BOJ1094.java create mode 100644 week6/BOJ11053.java create mode 100644 week6/BOJ15651.java create mode 100644 week6/BOJ6603.java diff --git a/BOJ1205.java b/week5/BOJ1205.java similarity index 96% rename from BOJ1205.java rename to week5/BOJ1205.java index e8e0701..0dc8bca 100644 --- a/BOJ1205.java +++ b/week5/BOJ1205.java @@ -1,3 +1,4 @@ +package week5; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Comparator; diff --git a/BOJ1244.java b/week5/BOJ1244.java similarity index 59% rename from BOJ1244.java rename to week5/BOJ1244.java index b6853b5..11cc693 100644 --- a/BOJ1244.java +++ b/week5/BOJ1244.java @@ -9,7 +9,7 @@ public static void main(String[] args) throws Exception { StringTokenizer st = new StringTokenizer(br.readLine()); int num = Integer.parseInt(st.nextToken())+1; - boolean[] onoff = new boolean[num]; + boolean[] onoff = new boolean[num]; // ์Šค์œ„์น˜ ์˜จ ์˜คํ”„๋ฅผ boolean ํƒ€์ž… ๋ฐฐ์—ด๋กœ ์„ ์–ธํ•˜์—ฌ ๊ด€๋ฆฌ st = new StringTokenizer(br.readLine()); for (int i = 1; i < num; i++) { @@ -26,23 +26,23 @@ public static void main(String[] args) throws Exception { int sex = Integer.parseInt(st.nextToken()); int idx = Integer.parseInt(st.nextToken()); - if (sex == 1) { + if (sex == 1) { // ์„ฑ๋ณ„์ด ๋‚จ์ž์ธ ๊ฒฝ์šฐ int count = 1; - while (idx * count < num) { - onoff[idx * count] = !onoff[idx * count]; + while (idx * count < num) { // ์ธ๋ฑ์Šค๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋„˜์„ ๋•Œ ๊นŒ์ง€ + onoff[idx * count] = !onoff[idx * count]; // ๊ณฑํ•˜๋ฉด์„œ ์Šค์œ„์น˜๋ฅผ ์กฐ์ž‘ count++; } } - else { + else { // ์„ฑ๋ณ„์ด ์—ฌ์ž์ธ ๊ฒฝ์šฐ ์ง€์ •ํ•œ ์ธ๋ฑ์Šค์˜ ์Šค์œ„์น˜ ๊ธฐ์ค€ ๋Œ€์นญ์ธ ๊ณณ์˜ ์Šค์œ„์น˜๋ฅผ ์กฐ์ž‘ int count = 1; - onoff[idx] = !onoff[idx]; + onoff[idx] = !onoff[idx]; // ์ง€์ • ์œ„์น˜๋Š” ๋ฌด์กฐ๊ฑด ์กฐ์ž‘ while (true) { - if (idx - count >= 1 && idx + count < num) { - if (onoff[idx - count] == onoff[idx + count]) { + if (idx - count >= 1 && idx + count < num) { // ์ธ๋ฑ์Šค ๋ฒ”์œ„ ํŒ๋‹จ + if (onoff[idx - count] == onoff[idx + count]) { // ๋Œ€์นญ์ธ์ง€ ํŒ๋‹จํ•˜์—ฌ ์Šค์œ„์น˜ ์กฐ์ž‘ onoff[idx - count] = !onoff[idx - count]; onoff[idx + count] = !onoff[idx + count]; - } else { + } else { // ๋Œ€์นญ์ด ์•„๋‹Œ ๊ฒฝ์šฐ break break; } } else { @@ -56,7 +56,7 @@ public static void main(String[] args) throws Exception { StringBuilder sb = new StringBuilder(); int count = 0; - for (int i = 1; i < num; i++) { + for (int i = 1; i < num; i++) { // ์ถœ๋ ฅ ํฌ๋งท์— ๋งž๊ฒŒ ์ˆ˜์ • if(onoff[i]) { sb.append("1 "); } diff --git a/BOJ20125.java b/week5/BOJ20125.java similarity index 95% rename from BOJ20125.java rename to week5/BOJ20125.java index 1fd9d57..326f637 100644 --- a/BOJ20125.java +++ b/week5/BOJ20125.java @@ -1,3 +1,4 @@ +package week5; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; diff --git a/BOJ4659.java b/week5/BOJ4659.java similarity index 96% rename from BOJ4659.java rename to week5/BOJ4659.java index 00cd20f..32e5387 100644 --- a/BOJ4659.java +++ b/week5/BOJ4659.java @@ -1,3 +1,4 @@ +package week5; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; diff --git a/BOJ25757.java b/week5/Main.java similarity index 95% rename from BOJ25757.java rename to week5/Main.java index 0f05fc1..7889f16 100644 --- a/BOJ25757.java +++ b/week5/Main.java @@ -1,3 +1,4 @@ +package week5; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashMap; diff --git a/week6/BOJ1094.java b/week6/BOJ1094.java new file mode 100644 index 0000000..910b45d --- /dev/null +++ b/week6/BOJ1094.java @@ -0,0 +1,19 @@ +package week6; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class BOJ1094 { + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int X = Integer.parseInt(br.readLine()); + int count = 0; + for (int i = 0; i <= 6; i++) { // ์ตœ๋Œ€ 64๊นŒ์ง€ ๋น„ํŠธ์—ฐ์‚ฐ + if ((X & 1 << i) != 0) + count++; + } + + System.out.println(count); + } +} diff --git a/week6/BOJ11053.java b/week6/BOJ11053.java new file mode 100644 index 0000000..7739c95 --- /dev/null +++ b/week6/BOJ11053.java @@ -0,0 +1,40 @@ +package week6; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ11053 { + 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[] arr = new int[N]; + int[] dp = new int[N]; + st = new StringTokenizer(br.readLine()); + + for (int i = 0; i < N; i++) { + arr[i] = Integer.parseInt(st.nextToken()); + } + + for (int i = 0; i < N; i++) { + dp[i] = 1; // ๊ฐ ์ž๋ฆฌ๋ถ€ํ„ฐ ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด์€ ์ตœ์†Œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ + } + + for (int i = 1; i < N; i++) { // ํ˜„์žฌ ์ž๋ฆฌ + for (int j = 0; j < i; j++) { // 0์ธ๋ฑ์Šค ๋ถ€ํ„ฐ ํ˜„์žฌ ์ง์ „ ๊นŒ์ง€ + if (arr[i] > arr[j]) { // ์ž‘์€ ๊ฒƒ์ด ์žˆ์œผ๋ฉด + dp[i] = Math.max(dp[i], dp[j] + 1); // ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด์˜ ๊ธธ์ด ์ฆ๊ฐ€ + } + } + } + + int max = 0; + for (int i = 0; i < N; i++) { + max = Math.max(max, dp[i]); // ์ตœ๋Œ€์น˜ ๋ฝ‘์Œ + } + + System.out.println(max); + } +} diff --git a/week6/BOJ15651.java b/week6/BOJ15651.java new file mode 100644 index 0000000..9b6071b --- /dev/null +++ b/week6/BOJ15651.java @@ -0,0 +1,40 @@ +package week6; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ15651 { + static int N,M; + static int[] numbers; + static StringBuilder sb = new StringBuilder(); + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + N =Integer.parseInt(st.nextToken()); + M = Integer.parseInt(st.nextToken()); + + numbers = new int[M]; + + permutation(0); + + System.out.println(sb); + } + + public static void permutation(int cnt) { + if (cnt == M) { + for(int a : numbers) { + sb.append(a+" "); + } + sb.append("\n"); + return; + } + + for (int i = 1; i <= N; i++) { // ์ค‘๋ณต ์กฐํ•ฉ์ด๋ฏ€๋กœ start ์„ค์ • ํ•„์š” X + numbers[cnt] = i; + permutation(cnt + 1); + } + } +} diff --git a/week6/BOJ6603.java b/week6/BOJ6603.java new file mode 100644 index 0000000..06ea37c --- /dev/null +++ b/week6/BOJ6603.java @@ -0,0 +1,49 @@ +package week6; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ6603 { + static int[] arr,numbers; + static int k; + static StringBuilder sb = new StringBuilder(); + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + while(true) { + StringTokenizer st = new StringTokenizer(br.readLine()); + k = Integer.parseInt(st.nextToken()); + + if(k==0) { // 0 ์ž…๋ ฅ์œผ๋กœ ๋ฐ˜๋ณต ์ข…๋ฃŒ + break; + } + + arr = new int[k]; + numbers = new int[6]; + for(int i=0;i Date: Sat, 8 Mar 2025 15:15:40 +0900 Subject: [PATCH 05/15] =?UTF-8?q?7=EC=A3=BC=EC=B0=A8=20=ED=92=80=EC=9D=B4?= =?UTF-8?q?=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week5/BOJ1205.java | 2 +- week5/BOJ1244.java | 3 +- week5/BOJ20125.java | 2 +- week5/{Main.java => BOJ25757.java} | 2 +- week5/BOJ4659.java | 3 +- week7/BOJ15652.java | 37 ++++++++++++++++ week7/BOJ15654.java | 53 +++++++++++++++++++++++ week7/BOJ15655.java | 53 +++++++++++++++++++++++ week7/BOJ16938.java | 68 ++++++++++++++++++++++++++++++ week7/BOJ1759.java | 66 +++++++++++++++++++++++++++++ 10 files changed, 283 insertions(+), 6 deletions(-) rename week5/{Main.java => BOJ25757.java} (94%) create mode 100644 week7/BOJ15652.java create mode 100644 week7/BOJ15654.java create mode 100644 week7/BOJ15655.java create mode 100644 week7/BOJ16938.java create mode 100644 week7/BOJ1759.java diff --git a/week5/BOJ1205.java b/week5/BOJ1205.java index 0dc8bca..1558523 100644 --- a/week5/BOJ1205.java +++ b/week5/BOJ1205.java @@ -5,7 +5,7 @@ import java.util.LinkedList; import java.util.StringTokenizer; -public class Main { +public class BOJ1205 { public static class rank { // ๋ณ€์ˆ˜๋“ค์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค int score; diff --git a/week5/BOJ1244.java b/week5/BOJ1244.java index 11cc693..a17a457 100644 --- a/week5/BOJ1244.java +++ b/week5/BOJ1244.java @@ -1,8 +1,9 @@ +package week5; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; -public class Main { +public class BOJ1244 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); diff --git a/week5/BOJ20125.java b/week5/BOJ20125.java index 326f637..83626a0 100644 --- a/week5/BOJ20125.java +++ b/week5/BOJ20125.java @@ -3,7 +3,7 @@ import java.io.InputStreamReader; import java.util.StringTokenizer; -public class Main { +public class BOJ20125 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); diff --git a/week5/Main.java b/week5/BOJ25757.java similarity index 94% rename from week5/Main.java rename to week5/BOJ25757.java index 7889f16..f1313d9 100644 --- a/week5/Main.java +++ b/week5/BOJ25757.java @@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.StringTokenizer; -public class Main { +public class BOJ25757 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); diff --git a/week5/BOJ4659.java b/week5/BOJ4659.java index 32e5387..24ddb5e 100644 --- a/week5/BOJ4659.java +++ b/week5/BOJ4659.java @@ -1,9 +1,8 @@ package week5; import java.io.BufferedReader; import java.io.InputStreamReader; -import java.util.StringTokenizer; -public class Main { +public class BOJ4659 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); diff --git a/week7/BOJ15652.java b/week7/BOJ15652.java new file mode 100644 index 0000000..3da24de --- /dev/null +++ b/week7/BOJ15652.java @@ -0,0 +1,37 @@ +package week7; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ15652 { + + static int N,M; + static int[] numbers; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); + M = Integer.parseInt(st.nextToken()); // M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด + numbers = new int[M]; + + permutation(0,1); // start๋ฅผ 1๋กœ ํ•˜์—ฌ 1 ~ N ๊นŒ์ง€์˜ ์ˆ˜ ์ค‘ ์ˆœ์—ด + } + + + public static void permutation(int cnt, int start) { + if(cnt==M) { + for(int a:numbers) { + System.out.print(a+" "); + } + System.out.println(); + return; + } + + for(int i=start;i<=N;i++) { + numbers[cnt]=i; + permutation(cnt+1,i); // ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— start ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์œ ์ง€ + } + } +} \ No newline at end of file diff --git a/week7/BOJ15654.java b/week7/BOJ15654.java new file mode 100644 index 0000000..eda3ebe --- /dev/null +++ b/week7/BOJ15654.java @@ -0,0 +1,53 @@ +package week7; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.StringTokenizer; + +public class BOJ15654 { + + static int N,M; + static int[] numbers, res; + static boolean[] isSelected; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); // N๊ฐœ์˜ ์ˆซ์ž + M = Integer.parseInt(st.nextToken()); // M๊ฐœ๋ฅผ ๋ฝ‘์€ ์ˆ˜์—ด + numbers = new int[N]; + res = new int[M]; + isSelected = new boolean[N]; + + st = new StringTokenizer(br.readLine()); + for(int i=0;i= 2) { // ์ตœ์†Œ 2๊ฐœ ์ด์ƒ ๊ณ ๋ฅธ ๊ฒฝ์šฐ์— ์กฐ๊ฑด ํŒ๋‹จ + for (int i = 0; i < N; i++) { + if (isSelected[i]) { + sum += numbers[i]; // ๋‚œ์ด๋„ ํ•ฉ ๊ณ„์‚ฐ + if (max < numbers[i]) // ์ตœ๋Œ€๊ฐ’ ๊ฐฑ์‹  + max = numbers[i]; + if (min > numbers[i]) // ์ตœ์†Œ๊ฐ’ ๊ฐฑ์‹  + min = numbers[i]; + } + } + + if (sum >= L && sum <= R && (max - min) >= X) // ์กฐ๊ฑด ํ™•์ธ + res++; + } + + return; + } + + isSelected[cnt] = true; // ๊ณ ๋ฅธ ๊ฒฝ์šฐ + subset(cnt + 1, pick + 1); + + isSelected[cnt] = false; // ์•ˆ๊ณ ๋ฅธ ๊ฒฝ์šฐ + subset(cnt + 1, pick); + + } + +} diff --git a/week7/BOJ1759.java b/week7/BOJ1759.java new file mode 100644 index 0000000..77c5a01 --- /dev/null +++ b/week7/BOJ1759.java @@ -0,0 +1,66 @@ +package week7; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.StringTokenizer; + +public class BOJ1759 { + + static int L,C; + static char[] characters, res; + static boolean[] isSelected; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + L = Integer.parseInt(st.nextToken()); // L๊ฐœ๋ฅผ ๋ฝ‘์•„ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ƒ์„ฑ + C = Integer.parseInt(st.nextToken()); // ์ด C๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์กด์žฌ + characters = new char[C]; // ๋ฌธ์ž ๋ฐฐ์—ด + res = new char[L]; // ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐฐ์—ด + isSelected = new boolean[C]; // ์„ ํƒ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฐฐ์—ด + + st = new StringTokenizer(br.readLine()); + for(int i=0;i=2) { // 1๊ฐœ ์ด์ƒ์˜ ๋ชจ์Œ, 2๊ฐœ ์ด์ƒ์˜ ์ž์Œ์ธ ๊ฒฝ์šฐ ์ถœ๋ ฅ + for(char a:res) { + System.out.print(a); + } + System.out.println(); + } + + return; + } + + for(int i=start;i Date: Thu, 20 Mar 2025 09:11:34 +0900 Subject: [PATCH 06/15] =?UTF-8?q?week8=20=EB=AC=B8=EC=A0=9C=20=ED=92=80?= =?UTF-8?q?=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week8/BOJ11660.java | 39 +++++++++++++++++++ week8/BOJ11725.java | 57 +++++++++++++++++++++++++++ week8/BOJ15663.java | 63 ++++++++++++++++++++++++++++++ week8/BOJ1753.java | 93 +++++++++++++++++++++++++++++++++++++++++++++ week8/BOJ5639.java | 61 +++++++++++++++++++++++++++++ 5 files changed, 313 insertions(+) create mode 100644 week8/BOJ11660.java create mode 100644 week8/BOJ11725.java create mode 100644 week8/BOJ15663.java create mode 100644 week8/BOJ1753.java create mode 100644 week8/BOJ5639.java diff --git a/week8/BOJ11660.java b/week8/BOJ11660.java new file mode 100644 index 0000000..dc00522 --- /dev/null +++ b/week8/BOJ11660.java @@ -0,0 +1,39 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.*; + +public class BOJ11660 { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + StringBuilder sb = new StringBuilder(); + + int N = Integer.parseInt(st.nextToken()); + int M = Integer.parseInt(st.nextToken()); + + int[][] grid = new int[N+1][N+1]; + + for(int i=1;i<=N;i++) { + st = new StringTokenizer(br.readLine()); + for(int j=1;j<=N;j++) { + int tmp = Integer.parseInt(st.nextToken()); + grid[i][j] = tmp + grid[i-1][j] + grid[i][j-1] - grid[i-1][j-1]; // DP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’ ์ €์žฅ + } + } + + for(int i=0;i[] graph; + static int[] res; + static boolean[] isSelected; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); // N๊ฐœ์˜ ์ˆซ์ž + + graph = new ArrayList[N+1]; // ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€๊ฒฝ + for (int i = 1; i <= N; i++) { + graph[i] = new ArrayList<>(); + } + + isSelected = new boolean[N+1]; + res = new int[N+1]; + + for (int i = 0; i < N-1; i++) { + st = new StringTokenizer(br.readLine()); + int n1 = Integer.parseInt(st.nextToken()); + int n2 = Integer.parseInt(st.nextToken()); + graph[n1].add(n2); + graph[n2].add(n1); + } + + bfs(1);// ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๊ฐ€ 1์ด๋ผ๊ณ  ๊ฐ€์ • + + for (int i = 2; i <= N; i++) { + System.out.println(res[i]); + } + } + + static void bfs(int start) { + Queue queue = new LinkedList<>(); + queue.add(start); + isSelected[start] = true; + + while (!queue.isEmpty()) { + int current = queue.poll(); + + for (int neighbor : graph[current]) { + if (!isSelected[neighbor]) {// ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ๋ฅผ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๋…ธ๋“œ๋กœ ๋ถ€๋ชจ ์ €์žฅ + isSelected[neighbor] = true; + res[neighbor] = current; + queue.add(neighbor); + } + } + } + } +} diff --git a/week8/BOJ15663.java b/week8/BOJ15663.java new file mode 100644 index 0000000..677e489 --- /dev/null +++ b/week8/BOJ15663.java @@ -0,0 +1,63 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.StringTokenizer; + +public class BOJ15663 { + + static int N,M; + static int[] numbers, res; + static boolean[] isSelected; + static Set set = new HashSet<>(); + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); // N๊ฐœ์˜ ์ˆซ์ž + M = Integer.parseInt(st.nextToken()); // M๊ฐœ๋ฅผ ๋ฝ‘์€ ์ˆ˜์—ด + numbers = new int[N]; + res = new int[M]; + isSelected = new boolean[N]; + + st = new StringTokenizer(br.readLine()); + for(int i=0;i { + int index; + int weight; + + public Node(int index, int cost) { + this.index = index; + this.weight = cost; + } + + @Override + public int compareTo(Node o) { + return Integer.compare(this.weight, o.weight); + } +} + +public class BOJ1753 { + + static ArrayList[] graph; + static int N,M; + + public static void main(String[] args) throws Exception { + + // ๊ทธ๋ž˜ํ”„ ์ž…๋ ฅ ๋ฐ›๊ธฐ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + // ์ •์ ์˜ ๊ฐœ์ˆ˜, ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ + N = Integer.parseInt(st.nextToken()); + M = Integer.parseInt(st.nextToken()); + int start = Integer.parseInt(br.readLine()); + + graph = new ArrayList[N + 1]; // ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉ + for (int i = 0; i <= N; i++) + graph[i] = new ArrayList<>(); + + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + int u = Integer.parseInt(st.nextToken()); + int v = Integer.parseInt(st.nextToken()); + int w = Integer.parseInt(st.nextToken()); + + graph[u].add(new Node(v, w)); + } + + // ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ + Dijkstra(N, start); + + } + + // ๋…ธ๋“œ์˜ ํฌ๊ธฐ, ์ถœ๋ฐœ์ง€ + public static void Dijkstra(int n, int start) { //๋‹ค์ต์ŠคํŠธ๋ผ + boolean[] check = new boolean[n + 1]; + int[] dist = new int[n + 1]; + int INF = Integer.MAX_VALUE; + + Arrays.fill(dist, INF); + dist[start] = 0; + + PriorityQueue pq = new PriorityQueue<>(); // priorityqueue๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค์ต์ŠคํŠธ๋ผ + pq.offer(new Node(start, 0)); + + while (!pq.isEmpty()) { + int curr = pq.poll().index; + + if (check[curr]) // ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋ฉด ํŒจ์Šค + continue; + check[curr] = true; + + // index์˜ ์—ฐ๊ฒฐ๋œ ์ •์  ๋น„๊ต + for (Node next : graph[curr]) { + if (dist[next.index] > dist[curr] + next.weight) { // ๊ธฐ์กด์— ๊ฐ€๋Š” ๋น„์šฉ์ด ์ƒˆ๋กœ ํŒŒ์•…ํ•œ ๋ฃจํŠธ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ์ตœ์‹ ํ™” + dist[next.index] = dist[curr] + next.weight; + + pq.offer(new Node(next.index, dist[next.index])); + } + } + } + + // ์ตœ์†Œ๊ฑฐ๋ฆฌ ์ถœ๋ ฅ + for (int i=1;i<=N;i++) { + if (dist[i] == INF) + System.out.println("INF"); + else + System.out.println(dist[i]); + } + } +} \ No newline at end of file diff --git a/week8/BOJ5639.java b/week8/BOJ5639.java new file mode 100644 index 0000000..8990943 --- /dev/null +++ b/week8/BOJ5639.java @@ -0,0 +1,61 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.*; + +public class BOJ5639 { + static class Node { + int num; + Node lchild; + Node rchild; + + public Node(int num) { + this.num = num; + lchild = rchild = null; + } + } + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringBuilder sb = new StringBuilder(); + + Node root = new Node(Integer.parseInt(br.readLine())); + + Stack stack = new Stack<>(); + + while (true) { + String s = br.readLine(); + if (s == null || s.equals("")) // ์ž…๋ ฅ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ + break; + + if (stack.isEmpty()) { + stack.push(root); + } + + Node tmp = new Node(Integer.parseInt(s)); + + if (stack.peek().num > tmp.num) { // ๋‹ค์Œ ์ถœ๋ ฅ๋˜๋Š” ์ˆ˜๊ฐ€ ํ˜„์žฌ ์ˆ˜๋ณด๋‹ค ์ž‘๋‹ค๋ฉด + stack.peek().lchild = tmp; // ์™ผ์ชฝ์ž์‹์œผ๋กœ ์ €์žฅ + stack.push(tmp); + } else { // ํฌ๋‹ค๋ฉด + Node parent = null; + while (!stack.isEmpty() && stack.peek().num < tmp.num) { // ๊ทธ ๋…ธ๋“œ์˜ ์ ์ ˆํ•œ ์œ„์น˜ ํƒ์ƒ‰ + parent = stack.pop(); + } + parent.rchild = tmp; // ์˜ค๋ฅธ์ชฝ ์ž์‹์œผ๋กœ ์ €์žฅ + stack.push(tmp); + } + } + + print(root); + } + + public static void print(Node n) { // ํ›„์œ„์ˆœํšŒ + if (n == null) { + return; + } + print(n.lchild); + print(n.rchild); + System.out.println(n.num); + } + +} From 74c71c2e926aed316a8bec0a615f220043e10a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A4=80=ED=9D=AC?= Date: Fri, 21 Mar 2025 16:26:05 +0900 Subject: [PATCH 07/15] =?UTF-8?q?9=EC=A3=BC=EC=B0=A8=20=ED=92=80=EC=9D=B4?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week9/BOJ10026.java | 115 ++++++++++++++++++++++++++++++++++++++++++++ week9/BOJ1012.java | 78 ++++++++++++++++++++++++++++++ week9/BOJ11404.java | 58 ++++++++++++++++++++++ week9/BOJ1260.java | 74 ++++++++++++++++++++++++++++ week9/BOJ1697.java | 62 ++++++++++++++++++++++++ 5 files changed, 387 insertions(+) create mode 100644 week9/BOJ10026.java create mode 100644 week9/BOJ1012.java create mode 100644 week9/BOJ11404.java create mode 100644 week9/BOJ1260.java create mode 100644 week9/BOJ1697.java diff --git a/week9/BOJ10026.java b/week9/BOJ10026.java new file mode 100644 index 0000000..67f766f --- /dev/null +++ b/week9/BOJ10026.java @@ -0,0 +1,115 @@ +package week9; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Queue; + +public class BOJ10026 { + + static int[][] arr; + static int[][] arr2; + static int n, m, s; + static boolean[][] visited; + static int[][] dir = { { 0, -1 }, { 0, 1 }, { 1, 0 }, { -1, 0 } }; + + public static void main(String[] args) throws Exception { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + n = Integer.parseInt(br.readLine()); + arr = new int[n][n]; // ์ผ๋ฐ˜ ์‚ฌ๋žŒ์šฉ ํ–‰๋ ฌ + arr2 = new int[n][n]; // ์ ๋ก์ƒ‰๋งน ์ €์žฅ์šฉ ํ–‰๋ ฌ + visited = new boolean[n][n]; + + for (int i = 0; i < n; i++) { // ํŽธ์˜๋ฅผ ์œ„ํ•ด ๊ฐ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ž…๋ ฅ + String str = br.readLine(); + for (int j = 0; j < n; j++) { + char c = str.charAt(j); + if (c == 'R') { + arr[i][j] = 1; + arr2[i][j]=1; + } else if (c == 'G') { // ์ ๋ก์ƒ‰๋งน์€ R๊ณผ G์ผ๋•Œ ๋ชจ๋‘ 1 + arr[i][j] = 2; + arr2[i][j]=1; + } else if (c == 'B') { + arr[i][j] = 3; + arr2[i][j]=3; + } + } + } + + int count=0; // ์ผ๋ฐ˜์‚ฌ๋žŒ์šฉ + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { // ๋ฐฉ๋ฌธ์•ˆํ•œ ๊ตฌ์—ญ๋งˆ๋‹ค ์ฒดํฌํ•˜๋ฉฐ ํšŸ์ˆ˜ ์ฆ๊ฐ€ + if(!visited[i][j]&&arr[i][j]==1) { + count++; + bfs(new int[] {i,j},1); + } + else if(!visited[i][j]&&arr[i][j]==2) { + count++; + bfs(new int[] {i,j},2); + } + else if(!visited[i][j]&&arr[i][j]==3) { + count++; + bfs(new int[] {i,j},3); + } + } + } + + int count2=0; // ์ ๋ก์ƒ‰๋งน์šฉ + visited = new boolean[n][n]; // ๋ฐฉ๋ฌธ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { // ๋ฐฉ๋ฌธ์•ˆํ•œ ์ƒˆ ๊ตฌ์—ญ๋งˆ๋‹ค ์ฒดํฌํ•˜๋ฉฐ ํšŸ์ˆ˜ ์ฆ๊ฐ€ + if(!visited[i][j]&&arr2[i][j]==1) { + count2++; + bfs2(new int[] {i,j},1); + } + else if(!visited[i][j]&&arr2[i][j]==3) { + count2++; + bfs2(new int[] {i,j},3); + } + } + } + + System.out.println(count+" "+count2); + + } + + static void bfs(int[] start, int col) { // ์ผ๋ฐ˜์ธ์šฉ bfs ํ•จ์ˆ˜ + Queue list = new ArrayDeque<>(); + list.add(start); + visited[start[0]][start[1]] = true; + + while (list.size() != 0) { + int[] idx = list.poll(); + for (int i = 0; i < 4; i++) { + int dy = idx[0] + dir[i][0]; + int dx = idx[1] + dir[i][1]; + if (dx >= 0 && dx < n && dy >= 0 && dy < n && !visited[dy][dx] && arr[dy][dx] == col) { + visited[dy][dx] = true; + list.add(new int[] { dy, dx }); + } + } + + } + } + static void bfs2(int[] start, int col) { // ์ ๋ก์ƒ‰๋งน์šฉ bfs ํ•จ์ˆ˜ + Queue list = new ArrayDeque<>(); + list.add(start); + visited[start[0]][start[1]] = true; + + while (list.size() != 0) { + int[] idx = list.poll(); + for (int i = 0; i < 4; i++) { + int dy = idx[0] + dir[i][0]; + int dx = idx[1] + dir[i][1]; + if (dx >= 0 && dx < n && dy >= 0 && dy < n && !visited[dy][dx] && arr2[dy][dx] == col) { + visited[dy][dx] = true; + list.add(new int[] { dy, dx }); + } + } + + } + } +} + diff --git a/week9/BOJ1012.java b/week9/BOJ1012.java new file mode 100644 index 0000000..b61612e --- /dev/null +++ b/week9/BOJ1012.java @@ -0,0 +1,78 @@ +package week9; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ1012 { + + static int N, M, K, ans, max; + static int[][] map; + static boolean[][] chk; + static boolean temp; + static int[][] dir = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } }; + + public static void main(String[] args) throws Exception { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int T = Integer.parseInt(br.readLine()); + + for (int t = 0; t < T; t++) { + StringTokenizer st = new StringTokenizer(br.readLine()); + M = Integer.parseInt(st.nextToken()); // ๋ฐญ ๊ฐ€๋กœ ๊ธธ์ด + N = Integer.parseInt(st.nextToken()); // ๋ฐญ ์„ธ๋กœ ๊ธธ์ด + K = Integer.parseInt(st.nextToken()); // ๋ฐฐ์ถ”๊ฐ€ ์‹ฌ์–ด์ง„ ์œ„์น˜ + + map = new int[N][M]; + + for (int i = 0; i < K; i++) { // ๋ฐฐ์ถ” ์œ„์น˜ ์ž…๋ ฅ๋ฐ›์•„ ์ €์žฅ + st = new StringTokenizer(br.readLine()); + int x = Integer.parseInt(st.nextToken()); + int y = Integer.parseInt(st.nextToken()); + + map[y][x] = 1; + } + max = 0; + + chk = new boolean[N][M]; + ans = 0; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + temp = false; // ๋ฐฐ์ถ”๋ฐญ์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จ๋‹จ + find(i, j); + if (temp) { // ๋ถ™์–ด์žˆ๋Š” ๋ฐฐ์ถ”๋ฐญ์—์„œ๋Š” ๋ฐฐ์ถ”๋ฒŒ๋ ˆ 1๋งˆ๋ฆฌ๋งŒ ํ•„์š” + ans++; + } + } + } + if (max < ans) { + max = ans; + } + + System.out.println(max); + } + } + + public static void find(int y, int x) { + if (chk[y][x] || map[y][x] != 1) { // ์ด๋ฏธ ์ฒดํฌ ํ–ˆ๊ฑฐ๋‚˜ ๋ฐฐ์ถ”๊ฐ€ ์•„๋‹ˆ๋ฉด + return; + } else { + for (int i = 0; i < 4; i++) { // ์ƒํ•˜์ขŒ์šฐ ํƒ์ƒ‰ + int dy = y + dir[i][0]; + int dx = x + dir[i][1]; + + if (dy < 0 || dy >= N || dx < 0 || dx >= M) { + continue; + } else { + chk[y][x] = true; + temp = true; + find(dy, dx); + } + } + } + return; + } + +} + diff --git a/week9/BOJ11404.java b/week9/BOJ11404.java new file mode 100644 index 0000000..9611223 --- /dev/null +++ b/week9/BOJ11404.java @@ -0,0 +1,58 @@ +package week9; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ11404 { + + static int[][] arr; + static int n, m; + + public static void main(String[] args) throws Exception { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + n = Integer.parseInt(br.readLine()); + m = Integer.parseInt(br.readLine()); + arr = new int[n + 1][n + 1]; + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= n; j++) { + if (i == j) + arr[i][j] = 0; // ์ž๊ธฐ ์ž์‹ ์œผ๋กœ ๊ฐˆ ์ˆ˜๋Š” ์—†์œผ๋‹ˆ 0 + else + arr[i][j] = 9900001;// ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ตœ๋Œ€ ๋น„์šฉ +1 ๋กœ ์„ค์ • + } + } + + for (int i = 0; i < m; i++) { // ์ž…๋ ฅ๋ฐ›์•„์„œ ์ €์žฅ + st = new StringTokenizer(br.readLine()); + int from = Integer.parseInt(st.nextToken()); + int to = Integer.parseInt(st.nextToken()); + int cost = Integer.parseInt(st.nextToken()); + arr[from][to] = Math.min(arr[from][to], cost); + } + + for (int k = 1; k <= n; k++) { // ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์šฉ ๊ณ„์‚ฐ + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= n; j++) { + arr[i][j] = Math.min(arr[i][j], arr[i][k] + arr[k][j]); + } + } + } + + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= n; j++) { + if (arr[i][j] > 9900000 || arr[i][j] == 0) { // 0์ด๊ฑฐ๋‚˜ ์ตœ๋Œ€๋น„์šฉ๋ณด๋‹ค ๋น„์‹ธ๋ฉด 0์œผ๋กœ ์ถœ๋ ฅ + System.out.print("0 "); + } else { // ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋น„์šฉ ์ถœ๋ ฅ + System.out.print(arr[i][j] + " "); + } + } + System.out.println(); + } + + } + +} + diff --git a/week9/BOJ1260.java b/week9/BOJ1260.java new file mode 100644 index 0000000..c97e099 --- /dev/null +++ b/week9/BOJ1260.java @@ -0,0 +1,74 @@ +package week9; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.StringTokenizer; + +public class BOJ1260 { + + static int[][] arr; + static int n, m, s; + static boolean[] visited; + + public static void main(String[] args) throws Exception { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + s = Integer.parseInt(st.nextToken()); + arr = new int[n + 1][n + 1]; // ์ธ์ ‘ํ–‰๋ ฌ ์‚ฌ์šฉ (N์ด 1000๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด๋ฐฉ) + visited = new boolean[n + 1]; + + for (int i = 0; i < m; i++) { // ๋ฌดํ–ฅ ๊ทธ๋ž˜ํ”„๋กœ ์ž…๋ ฅ๋ฐ›๊ธฐ + st = new StringTokenizer(br.readLine()); + int to = Integer.parseInt(st.nextToken()); + int from = Integer.parseInt(st.nextToken()); + + arr[to][from] = 1; + arr[from][to] = 1; + } + + dfs(s); + System.out.println(); + visited = new boolean[n + 1]; + bfs(s); + } + + static void dfs(int start) { // dfs + + visited[start] = true; + System.out.print(start + " "); + + for (int i = 1; i <= n; i++) { + if (arr[start][i] == 1 && !visited[i]) { + dfs(i); + } + } + + } + + static void bfs(int start) { // bfs + + Queue list = new ArrayDeque<>(); + list.add(start); + visited[start] = true; + + while (list.size() != 0) { + int idx = list.poll(); + System.out.print(idx + " "); + for (int i = 1; i <= n; i++) { + if (arr[idx][i] == 1 && !visited[i]) { + visited[i] = true; + list.add(i); + } + } + } + + } + +} + diff --git a/week9/BOJ1697.java b/week9/BOJ1697.java new file mode 100644 index 0000000..0aae360 --- /dev/null +++ b/week9/BOJ1697.java @@ -0,0 +1,62 @@ +package week9; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.StringTokenizer; + +public class BOJ1697 { + + static int[] line; + static boolean[] visited; + static int N, K, count; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + N = Integer.parseInt(st.nextToken()); + K = Integer.parseInt(st.nextToken()); + + visited = new boolean[100001]; + line = new int[100001]; + bfs(N); + + System.out.println(line[K]); + } + + public static void bfs(int start) { + Queue list = new ArrayDeque<>(); + visited[start] = true; + list.offer(start); + + while (!list.isEmpty()) { + int n = list.size(); // ๊ฐ™์€ ์‹œ๊ฐ„์— ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ์œ„์น˜ ์ˆ˜์ˆ˜ + for(int k=0;k=0&&dx<100001&&!visited[dx]) { // ์กฐ๊ฑด์— ๋งž์œผ๋ฉด ํ์— ์ถ”๊ฐ€๊ฐ€ + list.offer(dx); + visited[dx]=true; + } + } + } + count++; // 1์ดˆ ์ถ”๊ฐ€ + } + } + +} + From cdb21537bc83b68f1c198a22d62a748a1cf038f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A4=80=ED=9D=AC?= Date: Thu, 27 Mar 2025 11:14:31 +0900 Subject: [PATCH 08/15] =?UTF-8?q?=EB=AC=B8=EC=A0=9C=ED=92=80=EC=9D=B4=204?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week10/BOJ11403.java | 51 ++++++++++++++++++ week10/BOJ1238.java | 124 +++++++++++++++++++++++++++++++++++++++++++ week10/BOJ14940.java | 78 +++++++++++++++++++++++++++ week10/BOJ16928.java | 77 +++++++++++++++++++++++++++ 4 files changed, 330 insertions(+) create mode 100644 week10/BOJ11403.java create mode 100644 week10/BOJ1238.java create mode 100644 week10/BOJ14940.java create mode 100644 week10/BOJ16928.java diff --git a/week10/BOJ11403.java b/week10/BOJ11403.java new file mode 100644 index 0000000..ee25576 --- /dev/null +++ b/week10/BOJ11403.java @@ -0,0 +1,51 @@ +package week10; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ11403 { + + static int[][] arr; + static int n; + + public static void main(String[] args) throws Exception { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + n = Integer.parseInt(br.readLine()); + arr = new int[n + 1][n + 1]; + for (int i = 1; i <= n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 1; j <= n; j++) { + int a = Integer.parseInt(st.nextToken()); + if (a == 1) + arr[i][j] = 1; + else + arr[i][j] = 101; + } + } + + for (int k = 1; k <= n; k++) { + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= n; j++) { + arr[i][j] = Math.min(arr[i][j], arr[i][k] + arr[k][j]); + } + } + } + + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= n; j++) { + if (arr[i][j] > 100 || arr[i][j] == 0) { + System.out.print("0 "); + } else { + System.out.print("1 "); + } + } + System.out.println(); + } + + } + +} + diff --git a/week10/BOJ1238.java b/week10/BOJ1238.java new file mode 100644 index 0000000..ef2d68f --- /dev/null +++ b/week10/BOJ1238.java @@ -0,0 +1,124 @@ +package week10; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.PriorityQueue; +import java.util.StringTokenizer; + +class Node implements Comparable { + int index; + int weight; + + public Node(int index, int cost) { + this.index = index; + this.weight = cost; + } + + @Override + public int compareTo(Node o) { + return Integer.compare(this.weight, o.weight); + } +} + +public class BOJ1238 { + + static int n, m, x; + static ArrayList[] graph; + static ArrayList[] graph2; + + public static void main(String[] args) throws Exception { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + x = Integer.parseInt(st.nextToken()); + + graph = new ArrayList[n + 1]; + graph2 = new ArrayList[n + 1]; + + for (int i = 0; i <= n; i++) { + graph[i] = new ArrayList<>(); + graph2[i] = new ArrayList<>(); + } + + for (int i = 0; i < m; i++) { + st = new StringTokenizer(br.readLine()); + int u = Integer.parseInt(st.nextToken()); + int v = Integer.parseInt(st.nextToken()); + int w = Integer.parseInt(st.nextToken()); + + graph[v].add(new Node(u, w)); + graph2[u].add(new Node(v, w)); + } + + int[] dist = Dijkstra(x); + int[] dist2 = Dijkstra2(x); + int max = 0; + for (int i = 1; i <= n; i++) { + max = Math.max(max, dist[i] + dist2[i]); + } + System.out.println(max); + } + + public static int[] Dijkstra(int start) { + boolean[] check = new boolean[n + 1]; + int[] dist = new int[n + 1]; + int INF = Integer.MAX_VALUE; + + Arrays.fill(dist, INF); + dist[start] = 0; + + PriorityQueue pq = new PriorityQueue<>(); + pq.offer(new Node(start, 0)); + + while (!pq.isEmpty()) { + int nowVertex = pq.poll().index; + + if (check[nowVertex]) + continue; + check[nowVertex] = true; + + for (Node next : graph[nowVertex]) { + if (dist[next.index] > dist[nowVertex] + next.weight) { + dist[next.index] = dist[nowVertex] + next.weight; + + pq.offer(new Node(next.index, dist[next.index])); + } + } + } + + return dist; + } + + public static int[] Dijkstra2(int start) { + boolean[] check = new boolean[n + 1]; + int[] dist = new int[n + 1]; + int INF = Integer.MAX_VALUE; + + Arrays.fill(dist, INF); + dist[start] = 0; + + PriorityQueue pq = new PriorityQueue<>(); + pq.offer(new Node(start, 0)); + + while (!pq.isEmpty()) { + int nowVertex = pq.poll().index; + + if (check[nowVertex]) + continue; + check[nowVertex] = true; + + for (Node next : graph2[nowVertex]) { + if (dist[next.index] > dist[nowVertex] + next.weight) { + dist[next.index] = dist[nowVertex] + next.weight; + + pq.offer(new Node(next.index, dist[next.index])); + } + } + } + return dist; + } +} diff --git a/week10/BOJ14940.java b/week10/BOJ14940.java new file mode 100644 index 0000000..1521f28 --- /dev/null +++ b/week10/BOJ14940.java @@ -0,0 +1,78 @@ +package week10; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.LinkedList; +import java.util.Queue; +import java.util.StringTokenizer; + +public class BOJ14940 { + + static int n, m, x, y; + static int[][] map; + static int[][] dist; + static boolean[][] visited; + static int[][] dir = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + map = new int[n][m]; + dist = new int[n][m]; + visited = new boolean[n][m]; + + // ๋งต ์ž…๋ ฅ ๋ฐ›๊ธฐ + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < m; j++) { + int num = Integer.parseInt(st.nextToken()); + if (num == 2) { // ๋ชฉํ‘œ ์ง€์  + y = i; + x = j; + map[i][j] = 0; // ๋ชฉํ‘œ ์ง€์ ์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™” + } else { + map[i][j] = num; + } + dist[i][j] = -1; // ์ดˆ๊ธฐํ™”: ๊ฑฐ๋ฆฌ ์ •๋ณด๋Š” -1๋กœ ์„ค์ • + if(map[i][j]==0) + dist[i][j]=0; + } + } + + // BFS ์‹œ์ž‘ + bfs(y, x); + + // ๊ฒฐ๊ณผ ์ถœ๋ ฅ + for (int[] row : dist) { + for (int cell : row) { + System.out.print(cell + " "); + } + System.out.println(); + } + } + + public static void bfs(int startY, int startX) { + Queue queue = new LinkedList<>(); + queue.offer(new int[]{startY, startX}); + dist[startY][startX] = 0; // ๋ชฉํ‘œ ์ง€์ ์˜ ๊ฑฐ๋ฆฌ๋Š” 0 + + while (!queue.isEmpty()) { + int[] current = queue.poll(); + int y = current[0]; + int x = current[1]; + + for (int i = 0; i < 4; i++) { + int dy = y + dir[i][0]; + int dx = x + dir[i][1]; + + if (dy >= 0 && dy < n && dx >= 0 && dx < m && map[dy][dx] == 1 && dist[dy][dx] == -1) { + dist[dy][dx] = dist[y][x] + 1; + queue.offer(new int[]{dy, dx}); + } + } + } + } +} diff --git a/week10/BOJ16928.java b/week10/BOJ16928.java new file mode 100644 index 0000000..fe06f7c --- /dev/null +++ b/week10/BOJ16928.java @@ -0,0 +1,77 @@ +package week10; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.StringTokenizer; + +public class BOJ16928 { + + static int[] arr = new int[101]; // ์‚ฌ๋‹ค๋ฆฌ์™€ ๋ฑ€์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด + static boolean[] visited = new boolean[101]; // ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ฐฐ์—ด + static int n, m; + + public static void main(String[] args) throws Exception { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + + // ์‚ฌ๋‹ค๋ฆฌ์™€ ๋ฑ€์˜ ์ •๋ณด ์ž…๋ ฅ + for (int i = 0; i < n + m; i++) { + st = new StringTokenizer(br.readLine()); + int from = Integer.parseInt(st.nextToken()); + int to = Integer.parseInt(st.nextToken()); + arr[from] = to; // ์‚ฌ๋‹ค๋ฆฌ ๋˜๋Š” ๋ฑ€์˜ ์ด๋™ ์ •๋ณด๋ฅผ ์ €์žฅ + } + + // BFS ์ˆ˜ํ–‰ + System.out.println(bfs(1)); // ์‹œ์ž‘ ์ง€์ ์€ 1 + } + + static int bfs(int start) { + Queue queue = new ArrayDeque<>(); + queue.add(start); + visited[start] = true; // ์‹œ์ž‘ ์œ„์น˜ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ + int count = 0; // ์ด๋™ ํšŸ์ˆ˜ ์นด์šดํŠธ + + while (!queue.isEmpty()) { + int size = queue.size(); // ํ˜„์žฌ ๋ ˆ๋ฒจ์˜ ํฌ๊ธฐ (ํ•œ ๋ฒˆ์˜ ์ฃผ์‚ฌ์œ„ ๋˜์ง€๊ธฐ ๊ฒฐ๊ณผ) + count++; + + // ํ˜„์žฌ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ ์ฒ˜๋ฆฌ + for (int i = 0; i < size; i++) { + int current = queue.poll(); + + // ์ฃผ์‚ฌ์œ„ ๋˜์ง€๊ธฐ ๊ฒฐ๊ณผ (1๋ถ€ํ„ฐ 6๊นŒ์ง€) + for (int dice = 1; dice <= 6; dice++) { + int next = current + dice; + + // ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ๋Š” ๋ฌด์‹œ + if (next > 100) continue; + + // ์‚ฌ๋‹ค๋ฆฌ๋‚˜ ๋ฑ€์— ์˜ํ•œ ์ด๋™ ์ฒ˜๋ฆฌ + if (arr[next] != 0) { + next = arr[next]; + } + + // ๋ชฉํ‘œ ์ง€์ ์ธ 100์— ๋„๋‹ฌํ•˜๋ฉด ์ด๋™ ํšŸ์ˆ˜ ๋ฆฌํ„ด + if (next == 100) { + return count; + } + + // ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์œ„์น˜๋ผ๋ฉด ํ์— ์ถ”๊ฐ€ + if (!visited[next]) { + visited[next] = true; + queue.add(next); + } + } + } + } + + return -1; // 100์— ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์—†์œผ๋ฏ€๋กœ ์‚ฌ์‹ค์ƒ ์ด ๋ถ€๋ถ„์€ ํ•„์š” ์—†์Œ + } +} + From 29b0975f5227b594d33bac4910ff0c76a7b72c12 Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Tue, 1 Apr 2025 01:21:40 +0900 Subject: [PATCH 09/15] =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=92=80=EC=9D=B4?= =?UTF-8?q?=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week10/BOJ11403.java | 2 +- week10/BOJ1197.java | 87 ++++++++++++++++++++++++++++++++++++++++++++ week10/BOJ1238.java | 8 ++-- 3 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 week10/BOJ1197.java diff --git a/week10/BOJ11403.java b/week10/BOJ11403.java index ee25576..0248661 100644 --- a/week10/BOJ11403.java +++ b/week10/BOJ11403.java @@ -26,7 +26,7 @@ public static void main(String[] args) throws Exception { } } - for (int k = 1; k <= n; k++) { + for (int k = 1; k <= n; k++) { // ํ”Œ๋กœ์ด๋“œ-์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ชจ๋“  ์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ ์œผ๋กœ์˜ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { arr[i][j] = Math.min(arr[i][j], arr[i][k] + arr[k][j]); diff --git a/week10/BOJ1197.java b/week10/BOJ1197.java new file mode 100644 index 0000000..2f7f427 --- /dev/null +++ b/week10/BOJ1197.java @@ -0,0 +1,87 @@ +package week10; + + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.StringTokenizer; + +public class BOJ1197 { + + static class Edge implements Comparable { + int from, to, weight; + + public Edge(int from, int to, int weight) { + super(); + this.from = from; + this.to = to; + this.weight = weight; + } + + @Override + public int compareTo(Edge o) { + return Integer.compare(this.weight, o.weight); + } + + } + + static int V, E; + static int[] parents; + static Edge[] edgeList; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st= new StringTokenizer(br.readLine()); + + V = Integer.parseInt(st.nextToken()); + E = Integer.parseInt(st.nextToken()); + parents = new int[V + 1]; + edgeList = new Edge[2*E]; + for (int i = 1; i <= V; i++) { + parents[i] = i; + } + + for (int i = 0; i < E; i++) { + st = new StringTokenizer(br.readLine()); + int from = Integer.parseInt(st.nextToken()); + int to = Integer.parseInt(st.nextToken()); + int w = Integer.parseInt(st.nextToken()); + + edgeList[i] = new Edge(from, to, w); // ๋ฌดํ–ฅ ๊ทธ๋ž˜ํ”„์ด๋ฏ€๋กœ from to ๋ฒˆ๊ฐˆ์•„ ์ €์žฅ + edgeList[E+i] = new Edge(to, from, w); + } + + Arrays.sort(edgeList); + long result = 0, count = 0; + + for (Edge edge : edgeList) { // edge ๋งˆ๋‹ค ํƒ์ƒ‰ + if (union(edge.from, edge.to)) { + result += edge.weight; + if (++count == V - 1) { + break; + } + } + } + + System.out.println(result); + } + + static int find(int a) { + if (a == parents[a]) + return a; + return parents[a] = find(parents[a]); + } + + static boolean union(int a, int b) { + int aRoot = find(a); + int bRoot = find(b); + + if (aRoot == bRoot) + return false; + + parents[bRoot] = aRoot; + return true; + } + +} + diff --git a/week10/BOJ1238.java b/week10/BOJ1238.java index ef2d68f..f94ea81 100644 --- a/week10/BOJ1238.java +++ b/week10/BOJ1238.java @@ -36,8 +36,8 @@ public static void main(String[] args) throws Exception { m = Integer.parseInt(st.nextToken()); x = Integer.parseInt(st.nextToken()); - graph = new ArrayList[n + 1]; - graph2 = new ArrayList[n + 1]; + graph = new ArrayList[n + 1]; // ๋ชฉ์ ์ง€ ๋„์ฐฉ์šฉ + graph2 = new ArrayList[n + 1]; // ๋ชฉ์ ์ง€์—์„œ ๊ท€๊ฐ€์šฉ for (int i = 0; i <= n; i++) { graph[i] = new ArrayList<>(); @@ -63,7 +63,7 @@ public static void main(String[] args) throws Exception { System.out.println(max); } - public static int[] Dijkstra(int start) { + public static int[] Dijkstra(int start) { // ๋ชฉ์ ์ง€ ๋„์ฐฉ์šฉ boolean[] check = new boolean[n + 1]; int[] dist = new int[n + 1]; int INF = Integer.MAX_VALUE; @@ -93,7 +93,7 @@ public static int[] Dijkstra(int start) { return dist; } - public static int[] Dijkstra2(int start) { + public static int[] Dijkstra2(int start) { // ๋ชฉ์ ์ง€ ์ถœ๋ฐœ์šฉ boolean[] check = new boolean[n + 1]; int[] dist = new int[n + 1]; int INF = Integer.MAX_VALUE; From 7dce43e0163f91ae3980aaed47c27c60eb4843ab Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Fri, 4 Apr 2025 17:48:41 +0900 Subject: [PATCH 10/15] =?UTF-8?q?11=EC=A3=BC=EC=B0=A8=20=EB=AC=B8=EC=A0=9C?= =?UTF-8?q?=20=ED=92=80=EC=9D=B4=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week11/BOJ11727.java | 25 ++++++++++++++ week11/BOJ1261.java | 80 ++++++++++++++++++++++++++++++++++++++++++++ week11/BOJ12865.java | 41 +++++++++++++++++++++++ week11/BOJ2151.java | 5 +++ week11/BOJ9251.java | 36 ++++++++++++++++++++ 5 files changed, 187 insertions(+) create mode 100644 week11/BOJ11727.java create mode 100644 week11/BOJ1261.java create mode 100644 week11/BOJ12865.java create mode 100644 week11/BOJ2151.java create mode 100644 week11/BOJ9251.java diff --git a/week11/BOJ11727.java b/week11/BOJ11727.java new file mode 100644 index 0000000..e4d991d --- /dev/null +++ b/week11/BOJ11727.java @@ -0,0 +1,25 @@ +package week11; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class BOJ11727 { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int n = Integer.parseInt(br.readLine()); + + long[] arr = new long[1001]; + + arr[1] = 1; // ์ฒซ๋ฒˆ์งธ ๊ฒฝ์šฐ + arr[2] = 3; // ๋‘๋ฒˆ์งธ ๊ฒฝ์šฐ + + for (int i = 3; i <= n; i++) { + arr[i] = (arr[i - 1] + 2 * arr[i - 2]) % 10007; // ๊ฐ’์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ + } + + System.out.println(arr[n]); + } + +} diff --git a/week11/BOJ1261.java b/week11/BOJ1261.java new file mode 100644 index 0000000..4aa9904 --- /dev/null +++ b/week11/BOJ1261.java @@ -0,0 +1,80 @@ +package week11; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.PriorityQueue; +import java.util.StringTokenizer; + +public class BOJ1261 { + + static class Node implements Comparable { + int y, x, weight; + + public Node(int y, int x, int weight) { + super(); + this.y = y; + this.x = x; + this.weight = weight; + } + + @Override + public int compareTo(BOJ1261.Node o) { + return this.weight - o.weight; + } + + } + + static int[][] map, cmap; + static boolean[][] visited; + static int n, m; + static int[][] dir = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } }; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + m = Integer.parseInt(st.nextToken()); + n = Integer.parseInt(st.nextToken()); + + map = new int[n][m]; // ์ง€๋„ + cmap = new int[n][m]; // ๊ฐ’ ์ €์žฅํ•  ์ง€๋„ + visited = new boolean[n][m]; + + for (int i = 0; i < n; i++) { + String str = br.readLine(); + for (int j = 0; j < m; j++) { + map[i][j] = str.charAt(j) - '0'; // string์œผ๋กœ ๋ฐ›์•„์•ผํ•ด์„œ ์ •์ˆ˜ํ™” + cmap[i][j] = Integer.MAX_VALUE/2; + } + } + + dijkstra(); + + System.out.println(cmap[n-1][m-1]); + } + + static void dijkstra() { // ์šฐ์„ ์ˆœ์œ„ํ ํ™œ์šฉํ•œ ๋‹ค์ต์ŠคํŠธ๋ผ ์‚ฌ์šฉ + cmap[0][0] = map[0][0]; + PriorityQueue pq = new PriorityQueue<>(); + pq.add(new Node(0, 0, cmap[0][0])); + while (!pq.isEmpty()) { + Node cur = pq.poll(); + if (visited[cur.y][cur.x]) + continue; + visited[cur.y][cur.x] = true; + + for (int i = 0; i < 4; i++) { + int dy = cur.y + dir[i][0]; + int dx = cur.x + dir[i][1]; + + if (dy >= 0 && dy < n && dx >= 0 && dx < m) { // 4๋ฐฉํƒ์ƒ‰ ํ•˜๋ฉด์„œ ๊ฐ’ ๊ฐฑ์‹  + if (cmap[dy][dx] > cmap[cur.y][cur.x] + map[dy][dx]) { + cmap[dy][dx] = cmap[cur.y][cur.x] + map[dy][dx]; + pq.add(new Node(dy, dx, cmap[dy][dx])); + } + } + } + } + } + +} diff --git a/week11/BOJ12865.java b/week11/BOJ12865.java new file mode 100644 index 0000000..31a2230 --- /dev/null +++ b/week11/BOJ12865.java @@ -0,0 +1,41 @@ +package week11; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ12865 { + + 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 K = Integer.parseInt(st.nextToken()); // ์ตœ๋Œ€๋ฌด๊ฒŒ + + int[] weight = new int[N]; + int[] value = new int[N]; + + for (int i = 0; i < N; i++) { // ์ž…๋ ฅ๋ถ€ + st = new StringTokenizer(br.readLine()); + weight[i] = Integer.parseInt(st.nextToken()); + value[i] = Integer.parseInt(st.nextToken()); + } + + //dp[i][w] = i๋ฒˆ์งธ ๋ฌผ๊ฑด๊นŒ์ง€ ๊ณ ๋ คํ–ˆ์„ ๋•Œ w๋ฌด๊ฒŒ์—์„œ์˜ ๊ฐ€์น˜ + int[][] dp = new int[N + 1][K + 1]; + + for (int i = 1; i <= N; i++) { + for (int w = 0; w <= K; w++) { + if (weight[i - 1] > w) { // ๋ฌผํ’ˆ์ด ์ œํ•œ๋ณด๋‹ค ๋ฌด๊ฑฐ์šด ๊ฒฝ์šฐ + dp[i][w] = dp[i - 1][w]; + } else { // ์•„๋‹Œ ๊ฒฝ์šฐ ๋„ฃ๊ฑฐ๋‚˜ ์•ˆ๋„ฃ๊ฑฐ๋‚˜ ํ•ด์„œ ๊ฐ’ ๊ณ„์‚ฐ + dp[i][w] = Math.max(dp[i - 1][w], dp[i - 1][w - weight[i - 1]] + value[i - 1]); + } + } + } + + System.out.println(dp[N][K]); + } + +} diff --git a/week11/BOJ2151.java b/week11/BOJ2151.java new file mode 100644 index 0000000..e24061e --- /dev/null +++ b/week11/BOJ2151.java @@ -0,0 +1,5 @@ +package week11; + +public class BOJ2151 { + +} diff --git a/week11/BOJ9251.java b/week11/BOJ9251.java new file mode 100644 index 0000000..0d88e33 --- /dev/null +++ b/week11/BOJ9251.java @@ -0,0 +1,36 @@ +package week11; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class BOJ9251 { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + String s1 = br.readLine(); + String s2 = br.readLine(); + + System.out.println(lcs(s1,s2)); + } + + public static int lcs(String A, String B) { + int n = A.length(); + int m = B.length(); + + int[][] dp = new int[n + 1][m + 1]; // ๊ฐ ๋ฌธ์ž์—ด ๊ธธ์ด๋กœ 2์ฐจ์› ๋ฐฐ์—ด ๋งŒ๋“ฌ + + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= m; j++) { // ์ „๋ถ€ ํƒ์ƒ‰ํ•˜๋ฉด์„œ + if (A.charAt(i - 1) == B.charAt(j - 1)) { // ๊ฐ™์€ ๋ฌธ์ž๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด + dp[i][j] = dp[i - 1][j - 1] + 1; // ๋Œ€๊ฐ์„  ์œ„์˜ ๊ฒฝ์šฐ์—์„œ + 1 + } else { // ๋ฌธ์ž๊ฐ€ ๊ฐ™์ง€ ์•Š์€ ๊ฒฝ์šฐ + dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); // ์ด์ „๊ฒƒ๋“ค ์ค‘ ํฐ๊ฒƒ ์„ ํƒ + } + } + } + + return dp[n][m]; + } + +} From dd926d6490c1d484c36f09465f69b9e794c0fd66 Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Sun, 13 Apr 2025 10:17:16 +0900 Subject: [PATCH 11/15] =?UTF-8?q?12=EC=A3=BC=EC=B0=A8=20=EB=AC=B8=EC=A0=9C?= =?UTF-8?q?=ED=92=80=EC=9D=B4=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week12/BOJ14938.java | 101 +++++++++++++++++++++++++++++++++++++++ week12/BOJ16236.java | 111 +++++++++++++++++++++++++++++++++++++++++++ week12/BOJ17086.java | 74 +++++++++++++++++++++++++++++ week12/BOJ2293.java | 35 ++++++++++++++ week12/BOJ9461.java | 23 +++++++++ 5 files changed, 344 insertions(+) create mode 100644 week12/BOJ14938.java create mode 100644 week12/BOJ16236.java create mode 100644 week12/BOJ17086.java create mode 100644 week12/BOJ2293.java create mode 100644 week12/BOJ9461.java diff --git a/week12/BOJ14938.java b/week12/BOJ14938.java new file mode 100644 index 0000000..0ac1a79 --- /dev/null +++ b/week12/BOJ14938.java @@ -0,0 +1,101 @@ +package week12; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.*; + +public class BOJ14938 { + + public static class Node implements Comparable { // node ํด๋ž˜์Šค + int idx, weight; + + public Node(int idx, int weight) { + super(); + this.idx = idx; + this.weight = weight; + } + + @Override + public int compareTo(BOJ14938.Node o) { + return this.weight - o.weight; + } + + } + + static int n, m, r, res; + static ArrayList[] graph; + static int[] item; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + r = Integer.parseInt(st.nextToken()); + + graph = new ArrayList[n + 1]; + + for (int i = 0; i <= n; i++) { + graph[i] = new ArrayList<>(); + } + + item = new int[n + 1]; + st = new StringTokenizer(br.readLine()); + for (int i = 1; i <= n; i++) { + item[i] = Integer.parseInt(st.nextToken()); + } + + for (int i = 0; i < r; i++) { + st = new StringTokenizer(br.readLine()); + int from = Integer.parseInt(st.nextToken()); + int to = Integer.parseInt(st.nextToken()); + int w = Integer.parseInt(st.nextToken()); + + graph[from].add(new Node(to, w)); // ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์ด๋ฏ€๋กœ ์–‘์ชฝ์œผ๋กœ ๋‹ค ์‚ฌ์šฉ + graph[to].add(new Node(from, w)); + } + + for(int i=1;i<=n;i++) { + dijkstra(i); + } + + System.out.println(res); + + } + + static void dijkstra(int start) { // pq ๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค์ต์ŠคํŠธ๋ผ + Queue pq = new PriorityQueue<>(); + boolean[] visited = new boolean[n + 1]; + int[] dist = new int[n + 1]; + Arrays.fill(dist, 20); + dist[start] = 0; + pq.offer(new Node(start, 0)); + int tmp=0; + + while (!pq.isEmpty()) { + int curidx = pq.poll().idx; + if (visited[curidx]) + continue; + + visited[curidx] = true; + + for (Node n : graph[curidx]) { + if (dist[n.idx] > dist[curidx] + n.weight) { + dist[n.idx] = dist[curidx] + n.weight; + + pq.offer(new Node(n.idx, dist[n.idx])); + } + } + } + + for(int i=1;i<=n;i++) { + if(dist[i]<=m) { + tmp+=item[i]; + } + } + + res = Math.max(res, tmp); + } +} + diff --git a/week12/BOJ16236.java b/week12/BOJ16236.java new file mode 100644 index 0000000..95cac96 --- /dev/null +++ b/week12/BOJ16236.java @@ -0,0 +1,111 @@ +package week12; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.*; + +public class BOJ16236 { + + public static class Shark { // ์ƒ์–ด ์ •๋ณด ํด๋ž˜์Šค + int y, x, size, eat; + + public Shark(int y, int x, int size, int eat) { + this.y = y; + this.x = x; + this.size = size; + this.eat = eat; + } + } + + static int[][] map; // ๋งต + static int n, res; + static boolean[][] visited; // ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ + static int[][] dir = { { -1, 0 }, { 0, -1 }, { 0, 1 }, { 1, 0 } }; + static Shark s; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + n = Integer.parseInt(br.readLine()); + map = new int[n][n]; + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < n; j++) { + map[i][j] = Integer.parseInt(st.nextToken()); + if (map[i][j] == 9) { // ์ƒ์–ด ์ดˆ๊ธฐ์œ„์น˜ ์ฒ˜๋ฆฌ + s = new Shark(i, j, 2, 0); + map[i][j] = 0; + } + } + } + + while (true) { // ์ƒ์–ด๊ฐ€ ๋”์ด์ƒ ๋จน์„ ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์—†์„ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ + int move = bfs(); + if (move == -1) break; // ๋จน์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ + + res += move; + + if (s.size == s.eat) { // ์ƒ์–ด๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋จน์œผ๋ฉด ํฌ๊ธฐ ์ฆ๊ฐ€ + s.size++; + s.eat = 0; + } + } + + System.out.println(res); + } + + public static int bfs() { + Queue list = new ArrayDeque<>(); + visited = new boolean[n][n]; + list.add(new int[] { s.y, s.x }); + visited[s.y][s.x] = true; + + List targets = new ArrayList<>(); + int step = 0; + + while (!list.isEmpty()) { + int size = list.size(); + step++; + + for (int i = 0; i < size; i++) { + int[] cur = list.poll(); + + for (int d = 0; d < 4; d++) { + int dy = cur[0] + dir[d][0]; + int dx = cur[1] + dir[d][1]; + + if (dy >= 0 && dy < n && dx >= 0 && dx < n && !visited[dy][dx]) { + if (map[dy][dx] <= s.size) { // ์ด๋™ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ด๋™ + visited[dy][dx] = true; + + if (map[dy][dx] != 0 && map[dy][dx] < s.size) { + targets.add(new int[] { dy, dx }); // ๋ฌผ๊ณ ๊ธฐ์ธ ๊ฒฝ์šฐ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ ํ›„๋ณด ์ฒ˜๋ฆฌ + } + + list.add(new int[] { dy, dx }); + } + } + } + } + + if (!targets.isEmpty()) { // ๋จน์ด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๋ฌผ๊ณ ๊ธฐ ๋จน๋Š” ์นธ ๊ตฌํ•˜๊ธฐ + targets.sort((a, b) -> { + if (a[0] != b[0]) return a[0] - b[0]; // ์œ„์ชฝ + return a[1] - b[1]; // ์™ผ์ชฝ + }); + + int[] target = targets.get(0); + s.y = target[0]; + s.x = target[1]; + s.eat++; // ๋จน์€ ํšŸ์ˆ˜ ์ฆ๊ฐ€ + map[s.y][s.x] = 0; // ๋จน์€ ๋ฌผ๊ณ ๊ธฐ ์นธ 0์œผ๋กœ ์ˆ˜์ • + return step; + } + } + + return -1; + } +} + diff --git a/week12/BOJ17086.java b/week12/BOJ17086.java new file mode 100644 index 0000000..9930475 --- /dev/null +++ b/week12/BOJ17086.java @@ -0,0 +1,74 @@ +package week12; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.StringTokenizer; + +public class BOJ17086 { + + static int[][] map; + static int n, m, dist; + static boolean[][] visited; + static int[][] dir = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 }, { -1, -1 }, { -1, 1 }, { 1, -1 }, { 1, 1 } }; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + + map = new int[n][m]; + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < m; j++) { + map[i][j] = Integer.parseInt(st.nextToken()); + } + } + + dist = Integer.MIN_VALUE; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + if (map[i][j] == 0) { // ์ƒ์–ด๊ฐ€ ์—†๋Š” ๊ณณ ๋งˆ๋‹ค bfs ์ˆ˜ํ–‰ํ•˜์—ฌ ์•ˆ์ „๊ฑฐ๋ฆฌ ๊ตฌํ•จ + bfs(new int[] { i, j }); + } + } + } + + System.out.println(dist); + } + + public static void bfs(int[] start) { + Queue list = new ArrayDeque<>(); + visited = new boolean[n][m]; + visited[start[0]][start[1]] = true; + list.add(start); + int step = 1; // step ๋ณ„ bfs ์ˆ˜ํ–‰์œผ๋กœ ์ƒ์–ด๋ฅผ ๋งŒ๋‚˜๋ฉด step์„ ์•ˆ์ „๊ฑฐ๋ฆฌ๋กœ ๊ฐฑ์‹  + + while (!list.isEmpty()) { + int size = list.size(); + for (int s = 0; s < size; s++) { + int[] cur = list.poll(); + for (int i = 0; i < 8; i++) { + int dy = cur[0] + dir[i][0]; + int dx = cur[1] + dir[i][1]; + + if (dy >= 0 && dy < n && dx >= 0 && dx < m) { + if (map[dy][dx] == 1) { + dist = Math.max(dist, step); + return; + } else if (!visited[dy][dx]) { + visited[dy][dx] = true; + list.add(new int[] { dy, dx }); + } + } + } + } + step++; + } + } +} + diff --git a/week12/BOJ2293.java b/week12/BOJ2293.java new file mode 100644 index 0000000..a4fc255 --- /dev/null +++ b/week12/BOJ2293.java @@ -0,0 +1,35 @@ +package week12; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.*; + +public class BOJ2293 { + + 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 max = Integer.parseInt(st.nextToken()); + int[] val = new int[max + 1]; // 1์›๋ถ€ํ„ฐ ์„ธ๊ธฐ ์œ„ํ•ด์„œ +1๋กœ ๋ฐฐ์—ด + int[] coin = new int[n]; + + for (int i = 0; i < n; i++) { // ๋™์ „ ๊ฐ€๊ฒฉ + coin[i] = Integer.parseInt(br.readLine()); + } + + + val[0] = 1; + + for (int i = 0; i < n; i++) { + for (int j = coin[i]; j <= max; j++) { // ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ€๊ฒฉ๋ถ€ํ„ฐ + val[j] += val[j - coin[i]]; //dp ๊ณ„์‚ฐ + } + } + + System.out.println(val[max]); + + } +} + diff --git a/week12/BOJ9461.java b/week12/BOJ9461.java new file mode 100644 index 0000000..98e58db --- /dev/null +++ b/week12/BOJ9461.java @@ -0,0 +1,23 @@ +package week12; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class BOJ9461 { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int T = Integer.parseInt(br.readLine()); + long[] pado = new long[101]; + pado[1] = pado[2] = pado[3] = 1; + for (int i = 4; i <= 100; i++) { + pado[i] = pado[i - 2] + pado[i - 3]; + } + + for (int t = 0; t < T; t++) { + System.out.println(pado[Integer.parseInt(br.readLine())]); + } + } +} + From 2cf889a34c2232c4973d424664bb575cb68000b1 Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Mon, 21 Apr 2025 08:22:34 +0900 Subject: [PATCH 12/15] =?UTF-8?q?13=EC=A3=BC=EC=B0=A8=20=EB=AC=B8=EC=A0=9C?= =?UTF-8?q?=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week13/BOJ13549.java | 66 +++++++++++++++++++++++++++++++++++++ week13/BOJ1629.java | 31 ++++++++++++++++++ week13/BOJ1918.java | 61 ++++++++++++++++++++++++++++++++++ week13/BOJ2206.java | 78 ++++++++++++++++++++++++++++++++++++++++++++ week13/BOJ9465.java | 55 +++++++++++++++++++++++++++++++ 5 files changed, 291 insertions(+) create mode 100644 week13/BOJ13549.java create mode 100644 week13/BOJ1629.java create mode 100644 week13/BOJ1918.java create mode 100644 week13/BOJ2206.java create mode 100644 week13/BOJ9465.java diff --git a/week13/BOJ13549.java b/week13/BOJ13549.java new file mode 100644 index 0000000..9b22c90 --- /dev/null +++ b/week13/BOJ13549.java @@ -0,0 +1,66 @@ +package week13; + +import java.io.*; +import java.util.*; + +public class BOJ13549 { + + static class Node implements Comparable { + int x, time; + + public Node(int x, int time) { + super(); + this.x = x; + this.time = time; + } + + @Override + public int compareTo(BOJ13549.Node o) { + return this.time - o.time; + } + + } + + static int n, k; + static Queue list = new PriorityQueue<>(); + static boolean[] visited; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + k = Integer.parseInt(st.nextToken()); + visited = new boolean[1000001]; + list.add(new Node(n, 0)); + + bfs(); + } + + static void bfs() { // bfs์ฒ˜๋Ÿผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์ฐพ๊ธฐ + while (!list.isEmpty()) { + Node cur = list.poll(); + if (visited[cur.x]) + continue; + visited[cur.x] = true; + + if (cur.x == k) { + System.out.println(cur.time); + return; + } + int dx = cur.x * 2; + if (dx <= 100000 && !visited[dx]) { + list.add(new Node(dx, cur.time)); + } + dx = cur.x - 1; + if (dx >= 0 && !visited[dx]) { + list.add(new Node(dx, cur.time + 1)); + } + dx = cur.x + 1; + if (dx <= 100000 && !visited[dx]) { + list.add(new Node(dx, cur.time + 1)); + } + } + } + +} \ No newline at end of file diff --git a/week13/BOJ1629.java b/week13/BOJ1629.java new file mode 100644 index 0000000..0e119bb --- /dev/null +++ b/week13/BOJ1629.java @@ -0,0 +1,31 @@ +package week13; + +import java.io.*; +import java.util.*; + +public class BOJ1629 { + + static int MOD; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + int a = Integer.parseInt(st.nextToken()); + int b = Integer.parseInt(st.nextToken()); + MOD = Integer.parseInt(st.nextToken()); + + System.out.println(pow(a, b)); + + } + + static long pow(long a, int b) { // ํฐ ์ˆ˜ ์ œ๊ณฑ ๋ฐฉ์‹ ํ™œ์šฉ + if (b == 0) + return 1; + long half = pow(a, b / 2); + long result = (half * half) % MOD; + if (b % 2 == 1) + result = (result * a) % MOD; + return result; + } +} \ No newline at end of file diff --git a/week13/BOJ1918.java b/week13/BOJ1918.java new file mode 100644 index 0000000..8ea794e --- /dev/null +++ b/week13/BOJ1918.java @@ -0,0 +1,61 @@ +package week13; + +import java.io.*; +import java.util.*; + +public class BOJ1918 { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + String str = br.readLine(); + + System.out.println(topostfix(str)); + } + + static String topostfix(String str) { + StringBuilder sb = new StringBuilder(); + Stack stack = new Stack<>(); + + for (char c : str.toCharArray()) { + if (isAlphabet(c)) { // ์•ŒํŒŒ๋ฒณ์ด๋ฉด ๋ฐ”๋กœ ์ž…๋ ฅ + sb.append(c); + } else if (c == '(') { // ์—ฌ๋Š” ๊ด„ํ˜ธ ๋‚˜์˜ค๋ฉด ์Šคํƒ์— ์ €์žฅ + stack.push(c); + } else if (c == ')') { // ๋‹ซ๋Š” ๊ด„ํ˜ธ ๋‚˜์˜ค๋ฉด + while (!stack.isEmpty() && stack.peek() != '(') { // ์—ฌ๋Š” ๊ด„ํ˜ธ ์ „๊นŒ์ง€ + sb.append(stack.pop()); // ์Šคํƒ์—์„œ ๋นผ์„œ ์ž…๋ ฅ + } + stack.pop(); + } else if (isOperater(c)) { // ์—ฐ์‚ฐ์ž์ธ ๊ฒฝ์šฐ + while (!stack.isEmpty() && priority(stack.peek()) >= priority(c)) { + sb.append(stack.pop()); // ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ํ˜„์žฌ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์œผ๋ฉด ์Šคํƒ์—์„œ ๊บผ๋‚ด์„œ ์ž…๋ ฅ + } + stack.push(c); // ์—ฐ์‚ฐ์ž๋ฅผ ์Šคํƒ์— ์ €์žฅ + } + } + + while (!stack.isEmpty()) { + sb.append(stack.pop()); // ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž ํ›„์œ„ํ‘œ๊ธฐ๋กœ ์ž…๋ ฅ + } + + return sb.toString(); + } + + static boolean isAlphabet(char c) { // ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๊ฐ€ ์ˆซ์ž ๋Œ€์šฉ์ด๋ฏ€๋กœ ํŒ๋‹จ + return c - 'A' >= 0 && c - 'A' <= 26; + } + + static boolean isOperater(char c) { // ์—ฐ์‚ฐ์ž์ธ์ง€ ํŒ๋‹จ + return c == '*' || c == '/' || c == '+' || c == '-'; + } + + static int priority(char c) { // ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„ ํŒ๋‹จ + if (c == '+' || c == '-') + return 1; + if (c == '/' || c == '*') + return 2; + return 0; + } +} diff --git a/week13/BOJ2206.java b/week13/BOJ2206.java new file mode 100644 index 0000000..d9bc73d --- /dev/null +++ b/week13/BOJ2206.java @@ -0,0 +1,78 @@ +package week13; + +import java.io.*; +import java.util.*; + +public class BOJ2206 { + + static int n, m; + static int[][] map; + static boolean[][][] visited; + static int[][] dir = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } }; + + static class Cell { + int y, x, wall; + + public Cell(int y, int x, int wall) { + super(); + this.y = y; + this.x = x; + this.wall = wall; + } + + } + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + + map = new int[n][m]; + visited = new boolean[n][m][2]; + + for (int i = 0; i < n; i++) { + String str = br.readLine(); + for (int j = 0; j < m; j++) { + map[i][j] = str.charAt(j) - '0'; + } + } + + bfs(); + } + + static void bfs() { + Queue list = new ArrayDeque<>(); + list.add(new Cell(0, 0, 0)); + visited[0][0][0] = true; + int step = 1; + + while (!list.isEmpty()) { + int size = list.size(); + for (int s = 0; s < size; s++) { + Cell cur = list.poll(); + if (cur.y == n - 1 && cur.x == m - 1) { + System.out.println(step); + return; + } + for (int d = 0; d < 4; d++) { + int dy = cur.y + dir[d][0]; + int dx = cur.x + dir[d][1]; + if (dy >= 0 && dy < n && dx >= 0 && dx < m) { + if (map[dy][dx] == 1 && cur.wall == 0 && !visited[dy][dx][1]) { + visited[dy][dx][1] = true; + list.add(new Cell(dy, dx, 1)); + } else if (map[dy][dx] == 0 && !visited[dy][dx][cur.wall]) { + visited[dy][dx][cur.wall] = true; + list.add(new Cell(dy, dx, cur.wall)); + } + } + } + } + step++; + } + System.out.println("-1"); + } + +} diff --git a/week13/BOJ9465.java b/week13/BOJ9465.java new file mode 100644 index 0000000..6eedc97 --- /dev/null +++ b/week13/BOJ9465.java @@ -0,0 +1,55 @@ +package week13; + +import java.io.*; +import java.util.*; + +public class BOJ9465 { + + static int n; + static int[][] sticker; + static int[][] dp; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + StringBuilder sb = new StringBuilder(); + int T = Integer.parseInt(br.readLine()); + + for (int t = 1; t <= T; t++) { + n = Integer.parseInt(br.readLine()); + sticker = new int[2][n]; + dp = new int[2][n]; + + for (int i = 0; i < 2; i++) { // ์Šคํ‹ฐ์ปค์ž…๋ ฅ + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < n; j++) { + sticker[i][j] = Integer.parseInt(st.nextToken()); + } + } + + if (n == 1) { // 1์นธ์งœ๋ฆฌ ์ผ ๊ฒฝ์šฐ + sb.append(Math.max(sticker[0][0], sticker[1][0]) + "\n"); + continue; + } + + else { // 2์นธ ์ด์ƒ์ธ ๊ฒฝ์šฐ + dp[0][0] = sticker[0][0]; + dp[1][0] = sticker[1][0]; + + dp[0][1] = dp[1][0] + sticker[0][1]; + dp[1][1] = dp[0][0] + sticker[1][1]; + + for (int i = 2; i < n; i++) { // dp ๊ณ„์‚ฐ + for (int j = 0; j < 2; j++) { + dp[j][i] += Math.max(dp[(j * -1) + 1][i - 1], dp[(j * -1) + 1][i - 2]); + dp[j][i] += sticker[j][i]; + } + } + + sb.append(Math.max(dp[0][n - 1], dp[1][n - 1]) + "\n"); + } + } + + System.out.println(sb); + } +} From 49f5e93e50a2b126adada9fc81d44e0fddb7a6f2 Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Fri, 25 Apr 2025 17:25:08 +0900 Subject: [PATCH 13/15] =?UTF-8?q?=ED=92=80=EC=9D=B4=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week14/BOJ14503.java | 97 +++++++++++++++++++++++++++++++++++++ week14/BOJ1699.java | 32 ++++++++++++ week14/BOJ17142.java | 113 +++++++++++++++++++++++++++++++++++++++++++ week14/BOJ2133.java | 31 ++++++++++++ week14/BOJ2629.java | 59 ++++++++++++++++++++++ 5 files changed, 332 insertions(+) create mode 100644 week14/BOJ14503.java create mode 100644 week14/BOJ1699.java create mode 100644 week14/BOJ17142.java create mode 100644 week14/BOJ2133.java create mode 100644 week14/BOJ2629.java diff --git a/week14/BOJ14503.java b/week14/BOJ14503.java new file mode 100644 index 0000000..e17a24e --- /dev/null +++ b/week14/BOJ14503.java @@ -0,0 +1,97 @@ +package week14; + +import java.io.*; +import java.util.*; + +public class BOJ14503 { + + static int n, m, res; + static int[][] map; + static int[][] dir = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } }; + static int[] turn = { 3, 0, 1, 2 }; // ์™ผ์ชฝ์œผ๋กœ 90๋„ ๋„๋Š” ๊ฒฝ์šฐ + static int[] round = { 2, 3, 0, 1 }; // ๋’ค๋กœ ๊ฐ€๋Š” ๊ฒฝ์šฐ + + static class cleaner { // ์ฒญ์†Œ๊ธฐ ํด๋ž˜์Šค + int y, x, dir; + + public cleaner(int y, int x, int dir) { + super(); + this.y = y; + this.x = x; + this.dir = dir; + } + + } + + static cleaner c; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + + map = new int[n][m]; + + st = new StringTokenizer(br.readLine()); + int y = Integer.parseInt(st.nextToken()); + int x = Integer.parseInt(st.nextToken()); + int d = Integer.parseInt(st.nextToken()); + c = new cleaner(y, x, d); + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < m; j++) { + map[i][j] = Integer.parseInt(st.nextToken()); + } + } + + run(); + System.out.println(res); + } + + static void run() { + while (true) { + if (map[c.y][c.x] == 0) { + map[c.y][c.x] = 2; + res++; + } + + boolean chk = false; + + for (int d = 0; d < 4; d++) { // 4๋ฐฉํ–ฅ ์ค‘ ์ฒญ์†Œํ•  ๊ณณ ์žˆ๋Š”์ง€ ํƒ์ƒ‰ + int dy = c.y + dir[d][0]; + int dx = c.x + dir[d][1]; + if (dy < 0 || dy >= n || dx < 0 || dx >= m) + continue; + if (map[dy][dx] == 0) { + chk = true; + break; + } + } + if (chk) { // ์ฒญ์†Œํ•  ๊ณณ์ด ์žˆ๋‹ค๋ฉด ์™ผ์ชฝ์œผ๋กœ 90๋„ ๋Œ์•„์„œ ํ™•์ธ + c.dir = turn[c.dir]; + int dy = c.y + dir[c.dir][0]; + int dx = c.x + dir[c.dir][1]; + if (dy < 0 || dy >= n || dx < 0 || dx >= m) + continue; + if (map[dy][dx] == 0) { + c.y = dy; + c.x = dx; + } + } else { // ์ฒญ์†Œํ•  ๊ณณ์ด ์—†๋‹ค๋ฉด ๋’ค๋กœ ํ•œ์นธ ์ด๋™ + int dy = c.y + dir[round[c.dir]][0]; + int dx = c.x + dir[round[c.dir]][1]; + if (dy < 0 || dy >= n || dx < 0 || dx >= m || map[dy][dx] == 1) + return; + else { + c.y = dy; + c.x = dx; + } + } + } + } + +} + diff --git a/week14/BOJ1699.java b/week14/BOJ1699.java new file mode 100644 index 0000000..1238480 --- /dev/null +++ b/week14/BOJ1699.java @@ -0,0 +1,32 @@ +package week14; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ1699 { + + 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[] dp = new int[100001]; // ์ตœ๋Œ€ 10๋งŒ๊นŒ์ง€ ๊ณ ๋ คํ•จ + dp[0] = 0; + dp[1] = 1; + dp[2] = 2; + dp[3] = 3; + + for (int i = 4; i <= n; i++) { + dp[i] = i; + for (int j = 1; j * j <= i; j++) { // ์ œ๊ณฑ์ˆ˜ ์ด์ „์ด ์žˆ๋‹ค๋ฉด ๊ทธ ์ด์ „๊บผ + ์ œ๊ณฑ์ˆ˜ 1๊ฐœ + dp[i] = Math.min(dp[i], dp[i - j * j] + 1); + } + } + + System.out.println(dp[n]); + + } + +} diff --git a/week14/BOJ17142.java b/week14/BOJ17142.java new file mode 100644 index 0000000..6b2fb97 --- /dev/null +++ b/week14/BOJ17142.java @@ -0,0 +1,113 @@ +package week14; + +import java.io.*; +import java.util.*; + +public class BOJ17142 { + + static int n, v, m, res; + static List virus = new ArrayList<>(); + static int[][] map; + static Queue q = new ArrayDeque<>(); + static int[][] dir = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } }; + static int[] num; + static final int INF = 1000000; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + res = INF; + map = new int[n][n]; + num = new int[m]; + int cntzero = 0; + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < n; j++) { + int a = Integer.parseInt(st.nextToken()); + if (a == 2) { + virus.add(new int[] { i, j }); + v++; // ๋ฐ”์ด๋Ÿฌ์Šค์˜ ์ด ์ˆ˜ + } + if (a == 0) + cntzero++; // ๊ฐ์—ผ์‹œ์ผœ์•ผํ•  ์นธ ์ˆ˜ + map[i][j] = a; + } + } + + if (cntzero == 0) // ๊ฐ์—ผ์‹œํ‚ฌ ์นธ์ด ์—†๋Š” ๊ฒฝ์šฐ 0 ์ถœ๋ ฅ + System.out.println("0"); + else { + + combination(0, 0); + + if (res == INF) + System.out.println("-1"); + else + System.out.println(res); + } + } + + static void bfs(boolean[][] visited, Queue q) { + int[][] time = new int[n][n]; // ๊ฐ ์นธ๋ณ„ ๊ฐ์—ผ๋˜๋Š” ์‹œ๊ฐ„์„ ์ €์žฅํ•  ๋ฐฐ์—ด + int max = 0; + + while (!q.isEmpty()) { + int[] cur = q.poll(); + for (int d = 0; d < 4; d++) { + int dy = cur[0] + dir[d][0]; + int dx = cur[1] + dir[d][1]; + + if (dy >= 0 && dy < n && dx >= 0 && dx < n && map[dy][dx] != 1 && !visited[dy][dx]) { + visited[dy][dx] = true; // ๊ฐ์—ผ ๊ฐ€๋Šฅํ•œ ๊ตฌ์—ญ์„ ์ฐพ์•„์„œ ๊ฐ์—ผ์‹œํ‚ค๊ณ  ์‹œ๊ฐ„ ์ €์žฅ + time[dy][dx] = time[cur[0]][cur[1]] + 1; + q.add(new int[] { dy, dx }); + } + } + } + + // ๋ชจ๋“  ํƒ์ƒ‰์ด ๋๋‚˜๋ฉด ์ „ ์ง€์—ญ์„ ๊ฐ์—ผ์‹œ์ผฐ๋Š”์ง€ ํ™•์ธ + boolean success = true; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + if (map[i][j] == 0) { + if (!visited[i][j]) { + success = false; + break; + } else { + max = Math.max(max, time[i][j]); + } + } + } + } + + if (success) { // ๋ชจ๋‘ ๊ฐ์—ผ ์‹œ์ผฐ๋‹ค๋ฉด res ๊ฐฑ์‹  + res = Math.min(res, max); + } + } + + + static void combination(int cnt, int start) { // ์ฒ˜์Œ ํ™œ์„ฑํ™”์‹œํ‚ค๋Š” ๋ฐ”์ด๋Ÿฌ์Šค ์กฐํ•ฉ ๊ตฌํ•˜๊ณ  ํƒ์ƒ‰ + if (cnt == m) { + boolean[][] visited = new boolean[n][n]; + Queue q = new ArrayDeque<>(); + for (int i = 0; i < m; i++) { + int[] cur = virus.get(num[i]); + visited[cur[0]][cur[1]] = true; + q.add(cur); + } + bfs(visited, q); + return; + } + + for (int i = start; i < virus.size(); i++) { + num[cnt] = i; + combination(cnt + 1, i + 1); + } + } + +} + diff --git a/week14/BOJ2133.java b/week14/BOJ2133.java new file mode 100644 index 0000000..ea26b66 --- /dev/null +++ b/week14/BOJ2133.java @@ -0,0 +1,31 @@ +package week14; + +import java.io.*; +import java.util.*; + +public class BOJ2133 { + + 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[] dp = new int[31]; // ์ตœ๋Œ€ 30์นธ ๊นŒ์ง€ + dp[0] = 1; + dp[1] = 0; + dp[2] = 3; + + for (int i = 4; i <= n; i += 2) { // ์ ํ™”์‹์„ ์ด์šฉํ•œ dp ํ’€์ด + dp[i] = 3 * dp[i - 2]; + for (int j = 4; j <= i; j += 2) { + dp[i] += 2 * dp[i - j]; + } + } + + System.out.println(dp[n]); + + } + +} + diff --git a/week14/BOJ2629.java b/week14/BOJ2629.java new file mode 100644 index 0000000..61858be --- /dev/null +++ b/week14/BOJ2629.java @@ -0,0 +1,59 @@ +package week14; + +import java.io.*; +import java.util.*; + +public class BOJ2629 { + + static int n, m, res; + static int[] w; + static boolean[][] chk; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + StringBuilder sb = new StringBuilder(); + + n = Integer.parseInt(br.readLine()); + w = new int[n]; + st = new StringTokenizer(br.readLine()); + + for (int i = 0; i < n; i++) { + w[i] = Integer.parseInt(st.nextToken()); // ์ถ” ๋ฌด๋“ค + } + + m = Integer.parseInt(br.readLine()); + chk = new boolean[n + 1][15001]; + + dfs(0, 0); + + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < m; i++) { + res = Integer.parseInt(st.nextToken()); // ๊ตฌ์Šฌ ๋ฌด๊ฒŒ๋ฅผ ๊ทธ๋•Œ๊ทธ๋•Œ ๋ฐ›์•„์„œ ํŒ๋‹จ + if (res > 15001) { + sb.append("N "); + continue; + } + if (chk[n][res]) + sb.append("Y "); + else + sb.append("N "); + } + System.out.println(sb); + } + + static void dfs(int cnt, int weight) { + if (cnt > n || weight < 0 || weight > 15001 || chk[cnt][weight]) + return; + + chk[cnt][weight] = true; // cnt ๋ฒˆ์งธ๊นŒ์ง€์˜ ์ถ”๋ฅผ ๊ณ ๋ คํ–ˆ์„ ๋•Œ์˜ ๊ฐ€๋Šฅํ•œ ๋ฌด๊ฒŒ + + if (cnt == n) + return; + + dfs(cnt + 1, weight + w[cnt]); // ์ถ”๋ฅผ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ + dfs(cnt + 1, weight); // ์ถ”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ + dfs(cnt + 1, Math.abs(weight - w[cnt])); // ์ถ”๋ฅผ ๊ตฌ์Šฌ์ชฝ์— ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ + } +} + From 313a759ee7713b02fbb5b6c5039466d42d6ba011 Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Sat, 3 May 2025 21:47:56 +0900 Subject: [PATCH 14/15] =?UTF-8?q?15=EC=A3=BC=EC=B0=A8=20=EB=AC=B8=EC=A0=9C?= =?UTF-8?q?=20=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week15/BOJ14719.java | 0 week15/BOJ15683.java | 118 +++++++++++++++++++++++++++++++++++++++++++ week15/BOJ16173.java | 50 ++++++++++++++++++ week15/BOJ20056.java | 99 ++++++++++++++++++++++++++++++++++++ 4 files changed, 267 insertions(+) create mode 100644 week15/BOJ14719.java create mode 100644 week15/BOJ15683.java create mode 100644 week15/BOJ16173.java create mode 100644 week15/BOJ20056.java diff --git a/week15/BOJ14719.java b/week15/BOJ14719.java new file mode 100644 index 0000000..e69de29 diff --git a/week15/BOJ15683.java b/week15/BOJ15683.java new file mode 100644 index 0000000..0723ef1 --- /dev/null +++ b/week15/BOJ15683.java @@ -0,0 +1,118 @@ +package week15; + +import java.io.*; +import java.util.*; + +public class BOJ15683 { + + static class camera { // ์นด๋ฉ”๋ผ ์ •๋ณด ์ €์žฅ ํด๋ž˜์Šค + int y, x, type; + + public camera(int y, int x, int type) { + this.y = y; + this.x = x; + this.type = type; + } + } + + static int n, m, result; + static int[][] maps; + static List cams = new ArrayList<>(); + static int[][] dir = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } }; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + maps = new int[n][m]; + result = Integer.MAX_VALUE; + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < m; j++) { + int a = Integer.parseInt(st.nextToken()); + maps[i][j] = a; + if (a >= 1 && a <= 5) { + cams.add(new camera(i, j, a)); + } + } + } + + simulate(0, maps); + + System.out.println(result); + } + + static void simulate(int idx, int[][] map) { + if (idx == cams.size()) { // ์นด๋ฉ”๋ผ ๋‹ค ํ™•์ธํ•œ ๊ฒฝ์šฐ + int tmp = 0; + for (int i = 0; i < n; i++) { // ์‚ฌ๊ฐ์ง€๋Œ€ ์ฒดํฌ + for (int j = 0; j < m; j++) { + if (map[i][j] == 0) { + tmp++; + } + } + } + result = Math.min(result, tmp); // ์ตœ์†Œ๊ฐ’์œผ๋กœ ๊ฐฑ์‹  + return; + } + + camera c = cams.get(idx); + int[][] backup = copy(map); // ๋ฐฑํŠธ๋ž˜ํ‚น์œ„ํ•ด ํ˜„์žฌ ์ƒํƒœ ๋”ฐ๋กœ ์ €์žฅ + + for (int d = 0; d < 4; d++) { // ์นด๋ฉ”๋ผ 1,3,4์˜ ๊ฒฝ์šฐ์—๋Š” 4๋ฒˆ ์‹œํ–‰ + watch(c, map, d); // ์นด๋ฉ”๋ผ 2์˜ ๊ฒฝ์šฐ 2๋ฒˆ ์‹œํ–‰, 5๋Š” 1๋ฒˆ ์‹œํ–‰ + simulate(idx + 1, map); + map = copy(backup); + if (c.type == 2 && d == 1) break; + if (c.type == 5) break; + } + } + + static void watch(camera c, int[][] map, int direction) { + int type = c.type; + int y = c.y; + int x = c.x; + + if (type == 1) { // 1๋ฐฉํ–ฅ + observe(map, y, x, direction); + } else if (type == 2) { // ์–‘๋ฐฉํ–ฅ ๋ฐ˜๋Œ€๋กœ + observe(map, y, x, direction); + observe(map, y, x, (direction + 2) % 4); + } else if (type == 3) { // ์–‘๋ฐฉํ–ฅ ์ง๊ฐ์œผ๋กœ + observe(map, y, x, direction); + observe(map, y, x, (direction + 1) % 4); + } else if (type == 4) { // 3๋ฐฉํ–ฅ + observe(map, y, x, direction); + observe(map, y, x, (direction + 1) % 4); + observe(map, y, x, (direction + 2) % 4); + } else if (type == 5) { // 4๋ฐฉํ–ฅ + for (int d = 0; d < 4; d++) { + observe(map, y, x, d); + } + } + } + + static void observe(int[][] map, int y, int x, int d) { + int ny = y + dir[d][0]; + int nx = x + dir[d][1]; + + while (ny >= 0 && ny < n && nx >= 0 && nx < m) { // ๋งต ๋์ด๋‚˜ ๋ฒฝ๊นŒ์ง€ ๊ฐ์‹œ + if (map[ny][nx] == 6) break; + if (map[ny][nx] == 0) map[ny][nx] = 7; + ny += dir[d][0]; + nx += dir[d][1]; + } + } + + static int[][] copy(int[][] origin) { // ๋งต ๋ณต์‚ฌ ๋ฉ”์†Œ๋“œ + int[][] tmp = new int[n][m]; + for (int i = 0; i < n; i++) { + tmp[i] = origin[i].clone(); + } + return tmp; + } +} + diff --git a/week15/BOJ16173.java b/week15/BOJ16173.java new file mode 100644 index 0000000..9ed498f --- /dev/null +++ b/week15/BOJ16173.java @@ -0,0 +1,50 @@ +package week15; + +import java.io.*; +import java.util.*; + +public class BOJ16173 { + + static int N; + static int[][] map; + static boolean[][] visited; + static boolean found = false; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + N = Integer.parseInt(br.readLine()); + map = new int[N][N]; + visited = new boolean[N][N]; + + for (int i = 0; i < N; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < N; j++) { + map[i][j] = Integer.parseInt(st.nextToken()); + } + } + + dfs(0, 0); + + System.out.println(found ? "HaruHaru" : "Hing"); + } + + public static void dfs(int x, int y) { + if (x < 0 || y < 0 || x >= N || y >= N || visited[x][y]) { + return; // ์ด๋™ ๊ฐ€๋Šฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ + } + + visited[x][y] = true; + + if (map[x][y] == -1) { + found = true; + return; + } + + int jump = map[x][y]; + dfs(x + jump, y); // ์•„๋ž˜ ์ด๋™ + dfs(x, y + jump); // ์˜ค๋ฅธ์ชฝ ์ด๋™ + } +} + diff --git a/week15/BOJ20056.java b/week15/BOJ20056.java new file mode 100644 index 0000000..a405f95 --- /dev/null +++ b/week15/BOJ20056.java @@ -0,0 +1,99 @@ +package week15; + +import java.io.*; +import java.util.*; + +public class BOJ20056 { + static class Fireball { + int r, c, m, s, d; + + public Fireball(int r, int c, int m, int s, int d) { + this.r = r; + this.c = c; + this.m = m; + this.s = s; + this.d = d; + } + } + + static int N, M, K; + static List[][] map; + static int[] dr = {-1, -1, 0, 1, 1, 1, 0, -1}; + static int[] dc = {0, 1, 1, 1, 0, -1, -1, -1}; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + N = Integer.parseInt(st.nextToken()); // ๊ฒฉ์ž ํฌ๊ธฐ + M = Integer.parseInt(st.nextToken()); // ํŒŒ์ด์–ด๋ณผ ๊ฐœ์ˆ˜ + K = Integer.parseInt(st.nextToken()); // ๋ช…๋ น ํšŸ์ˆ˜ + + map = new ArrayList[N][N]; + for (int i = 0; i < N; i++) + for (int j = 0; j < N; j++) + map[i][j] = new ArrayList<>(); + + List fireballs = new ArrayList<>(); + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + int r = Integer.parseInt(st.nextToken()) - 1; + int c = Integer.parseInt(st.nextToken()) - 1; + int m = Integer.parseInt(st.nextToken()); + int s = Integer.parseInt(st.nextToken()); + int d = Integer.parseInt(st.nextToken()); + fireballs.add(new Fireball(r, c, m, s, d)); + } + + while (K-- > 0) { + // ํŒŒ์ด์–ด๋ณผ ์ด๋™ + for (Fireball fb : fireballs) { + int nr = (fb.r + dr[fb.d] * fb.s % N + N) % N; + int nc = (fb.c + dc[fb.d] * fb.s % N + N) % N; + map[nr][nc].add(new Fireball(nr, nc, fb.m, fb.s, fb.d)); + } + + // ์ฒ˜๋ฆฌ + fireballs.clear(); + for (int r = 0; r < N; r++) { + for (int c = 0; c < N; c++) { + if (map[r][c].size() == 0) continue; + + if (map[r][c].size() == 1) { + fireballs.add(map[r][c].get(0)); + } else { + int sumM = 0, sumS = 0; + boolean allEven = true, allOdd = true; + + for (Fireball fb : map[r][c]) { + sumM += fb.m; + sumS += fb.s; + if (fb.d % 2 == 0) allOdd = false; + else allEven = false; + } + + int newM = sumM / 5; + if (newM == 0) { + map[r][c].clear(); + continue; + } + + int newS = sumS / map[r][c].size(); + int[] newDirs = (allEven || allOdd) ? new int[]{0, 2, 4, 6} : new int[]{1, 3, 5, 7}; + for (int d : newDirs) { + fireballs.add(new Fireball(r, c, newM, newS, d)); + } + } + map[r][c].clear(); + } + } + } + + int answer = 0; + for (Fireball fb : fireballs) { + answer += fb.m; + } + System.out.println(answer); + } +} + From 6c4c214c6c62213428fa7a8ca7f2b8a4b899222e Mon Sep 17 00:00:00 2001 From: JHLEE325 Date: Sun, 18 May 2025 20:21:11 +0900 Subject: [PATCH 15/15] =?UTF-8?q?week16=20=EB=AC=B8=EC=A0=9C=ED=92=80?= =?UTF-8?q?=EC=9D=B4=204=EB=AC=B8=EC=A0=9C=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week15/BOJ14719.java | 46 ++++++++++++++++++++++++++++ week16/BOJ10157.java | 61 +++++++++++++++++++++++++++++++++++++ week16/BOJ1459.java | 46 ++++++++++++++++++++++++++++ week16/BOJ18111.java | 57 +++++++++++++++++++++++++++++++++++ week16/BOJ2578.java | 72 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 282 insertions(+) create mode 100644 week16/BOJ10157.java create mode 100644 week16/BOJ1459.java create mode 100644 week16/BOJ18111.java create mode 100644 week16/BOJ2578.java diff --git a/week15/BOJ14719.java b/week15/BOJ14719.java index e69de29..f2f48bb 100644 --- a/week15/BOJ14719.java +++ b/week15/BOJ14719.java @@ -0,0 +1,46 @@ +package week15; + +import java.io.*; +import java.util.*; + +public class BOJ14719 { + + static int[] height; + static int n,m,result; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + height = new int[m]; + + st = new StringTokenizer(br.readLine()); + for(int i=0;i=0;i--) { // ์˜ค๋ฅธ์ชฝ ๋ฒฝ ๋†’์ด ๊ณ„์‚ฐ + right[i] = Math.max(right[i+1], height[i]); + } + + for(int i=0;i0) + result+=water; + } + + System.out.println(result); + } + +} + diff --git a/week16/BOJ10157.java b/week16/BOJ10157.java new file mode 100644 index 0000000..a82d80d --- /dev/null +++ b/week16/BOJ10157.java @@ -0,0 +1,61 @@ +package week16; + +import java.io.*; +import java.util.*; + +public class BOJ10157 { + + static boolean[][] map; + static int n, m, num; + static int[][] dir = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } }; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + + map = new boolean[m][n]; + + int count = n*m; + int cnt = 1; + num = Integer.parseInt(br.readLine()); + + int y = m-1; // ๋ฐฐ์—ด๋กœ ํ–ˆ์„ ๋•Œ ์™ผ์ชฝ ํ•˜๋‹จ์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ขŒํ‘œ ๋งž์ถฐ์คŒ + int x = 0; + map[y][x] = true; + int dnum = 0; + while(cnt<=count) { + if(cnt==num) { // ๋ฒˆํ˜ธ ๋„์ฐฉํ•œ ๊ฒฝ์šฐ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒ + System.out.println((x+1) + " " + (m-y)); + return; + } + if(cnt==count) + break; + int dy = y + dir[dnum][0]; + int dx = x + dir[dnum][1]; + + // ๋‹ฌํŒฝ์ด ๋ชจ์–‘์œผ๋กœ ๋Œ๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด๋“ค + if(dy<0||dy>=m||dx<0||dx>=n) { // ์ž„๊ณ„์ ์ด๊ฑฐ๋‚˜ + dnum++; + dnum = dnum%4; + continue; + } + if(map[dy][dx]) { // ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๊ณณ์„ ๋งŒ๋‚˜๋ฉด ๋ฐฉํ–ฅ ์ „ํ™˜ + dnum++; + dnum = dnum%4; + continue; + } + map[dy][dx]=true; + y=dy; + x=dx; + + cnt++; + } + + System.out.println("0"); // ๋ชป ์•‰๋Š” ๊ฒฝ์šฐ + } + +} + diff --git a/week16/BOJ1459.java b/week16/BOJ1459.java new file mode 100644 index 0000000..90fbe87 --- /dev/null +++ b/week16/BOJ1459.java @@ -0,0 +1,46 @@ +package week16; + +import java.io.*; +import java.util.*; + +public class BOJ1459 { + + static long x, y, w, s, res; // ์ˆ˜๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— long ์‚ฌ์šฉ + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + x = Integer.parseInt(st.nextToken()); + y = Integer.parseInt(st.nextToken()); + w = Integer.parseInt(st.nextToken()); + s = Integer.parseInt(st.nextToken()); + + long height = Math.min(x, y); // ์„ธ๋กœ ๊ฑฐ๋ฆฌ + + if (s <= 2 * w) { // ๋Œ€๊ฐ์„ ์ด ์ด๋“์ธ ๊ฒฝ์šฐ + res += s * height; + } else { + res += w * 2 * height; + } + + long width = Math.max(x, y) - Math.min(x, y); // ๊ฐ€๋กœ ๊ฑฐ๋ฆฌ + if (width % 2 == 0) { // ๋‚จ์€ ๊ฑฐ๋ฆฌ๊ฐ€ ์ง์ˆ˜์ผ ๋•Œ + if (2 * s <= 2 * w) { // ์ง€๊ทธ์žฌ๊ทธ๊ฐ€ ์ด๋“์ธ ๊ฒฝ์šฐ + res += 2 * s * (width / 2); + } else { // ์ง์„  ์ด๋™์ด ์ด๋“์ธ ๊ฒฝ์šฐ + res += w * width; + } + } else { // ๋‚จ์€ ๊ฑฐ๋ฆฌ๊ฐ€ ํ™€์ˆ˜์ผ ๋•Œ + if (2 * s <= 2 * w) { + res += 2 * s * (width / 2); + res += w; + } else { + res += w * width; + } + } + + System.out.println(res); + } + +} diff --git a/week16/BOJ18111.java b/week16/BOJ18111.java new file mode 100644 index 0000000..619345a --- /dev/null +++ b/week16/BOJ18111.java @@ -0,0 +1,57 @@ +package week16; + +import java.io.*; +import java.util.*; + +public class BOJ18111 { + + static int n, m, b; + static int[][] map; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + b = Integer.parseInt(st.nextToken()); + + map = new int[n][m]; + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < m; j++) { + int a = Integer.parseInt(st.nextToken()); + map[i][j] = a; + } + } + + int restime = Integer.MAX_VALUE; + int resh = 0; + + for (int h = 0; h <= 256; h++) { // ๋†’์ด๋ฅผ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ชจ๋‘ ํƒ์ƒ‰ + int remove = 0; + int place = 0; + + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + if (map[i][j] > h) { + remove += map[i][j] - h; // ๋ถ€์…”์•ผ ๋˜๋Š” ๊ฒฝ์šฐ ํšŸ์ˆ˜ + } else { + place += h - map[i][j]; // ์„ค์น˜ํ•ด์•ผ ๋˜๋Š” ๊ฒฝ์šฐ ํšŸ์ˆ˜ + } + } + } + + if (remove + b >= place) { // ์‹œ๊ฐ„ ๊ณ„์‚ฐ + int time = remove * 2 + place; + if (time <= restime) { + restime = time; + resh = h; + } + } + } + System.out.println(restime + " " + resh); + } +} + diff --git a/week16/BOJ2578.java b/week16/BOJ2578.java new file mode 100644 index 0000000..66053a6 --- /dev/null +++ b/week16/BOJ2578.java @@ -0,0 +1,72 @@ +package week16; + +import java.io.*; +import java.util.*; + +public class BOJ2578 { + + static Map list = new HashMap<>(); + static int[] x = new int[6]; + static int[] y = new int[6]; + static int[] diagonal = new int[2]; + static boolean[] x_done = new boolean[6]; + static boolean[] y_done = new boolean[6]; + static boolean[] d_done = new boolean[2]; + static int bingo = 0; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + for (int i = 1; i <= 5; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 1; j <= 5; j++) { + int num = Integer.parseInt(st.nextToken()); + list.put(num, new int[] { i, j }); // ๋น™๊ณ ํŒ์„ map์œผ๋กœ ์‚ฌ์šฉ + } + } + + int cnt = 0; + + for (int i = 1; i <= 5; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 1; j <= 5; j++) { + cnt++; + int num = Integer.parseInt(st.nextToken()); + int[] temp = list.get(num); + + int r = temp[0]; + int c = temp[1]; + + x[r]++; // ๊ฐ€๋กœ์—ด ์ฒดํฌ + y[c]++; // ์„ธ๋กœ์—ด ์ฒดํฌ + if (r == c) diagonal[0]++; // ๋Œ€๊ฐ์„  1 + if (r + c == 6) diagonal[1]++; // ๋Œ€๊ฐ์„  2 + + // ๋น™๊ณ  ๊ฐœ์ˆ˜ ์ฒดํฌ + if (x[r] == 5 && !x_done[r]) { + bingo++; + x_done[r] = true; + } + if (y[c] == 5 && !y_done[c]) { + bingo++; + y_done[c] = true; + } + if (diagonal[0] == 5 && !d_done[0]) { + bingo++; + d_done[0] = true; + } + if (diagonal[1] == 5 && !d_done[1]) { + bingo++; + d_done[1] = true; + } + + if (bingo >= 3) { // ์กฐ๊ฑด ๋งŒ์กฑ์‹œ + System.out.println(cnt); + return; + } + } + } + } +} +