Hamutaro - Hamtaro 4

Algorithm 45

[Algorithm] ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• (Euclidean Algorithm)

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• (Euclidean Algorithm) ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ (GCD, LCM)์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•œ ๋’ค ๋‘ ์ˆ˜์˜ ๊ณฑ์„ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆ„๋ฉด ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ๋‘ ์ž์—ฐ์ˆ˜์˜ ๊ณฑ = ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ * ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜∴ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = ๋‘ ์ž์—ฐ์ˆ˜์˜ ๊ณฑ / ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๋งŒ์•ฝ A, B๋ผ๋Š” ๋‘ ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM)๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹คLCM = A*B / GCD

Algorithm 2024.11.22

[Silver V/JAVA] 10815 ์ˆซ์ž์นด๋“œ

https://www.acmicpc.net/problem/10815  ์ด์ง„ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐฐ์—ด์„ ์ผ์ผ์ด ๋น„๊ตํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œฌ๋‹ค.์ด์ง„ํƒ์ƒ‰(Binary Search)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ (https://marginata.tistory.com/150)ํ’€์ด 1์€ System.out.print() ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ผ์ผ์ด ์ถœ๋ ฅ์„ ํ–ˆ๊ณ , ํ’€์ด 2๋Š” StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ์„ ํ–ˆ๋‹ค. ์„ฑ๋Šฅ๋ฉด์—์„œ StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋น ๋ฅด๋‹ค. ํ’€์ด 1 import java.io.*;import java.util.*;public class Main{ static int[] arr; public static void main(String[] args) throws IOExc..

Algorithm/BOJ 2024.11.18

[Algorithm] ์ด์ง„ํƒ์ƒ‰ (Binary Search)

์ด์ง„ํƒ์ƒ‰ (Binary Search) ์ค‘์•™๊ฐ’ (mid) ์ง€์ •ํ•ด์„œ ๋น„๊ตํ•˜๋Š” ํƒ์ƒ‰์ด์ง„ํƒ์ƒ‰์„ ํ•˜๋ ค๋ฉด ์ •๋ ฌ์ด ๋œ ์ƒํƒœ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ   ์ด์ง„ํƒ์ƒ‰์˜ ์‹œ๊ฐ„๋ณต์žก๋„ O(logn)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.์„ ํ˜•ํƒ์ƒ‰๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•จ์—๋”ฐ๋ผ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์Œ (๊ทธ๋ž˜ํ”„ ์ฐธ๊ณ )

Algorithm 2024.11.18

[Algorithm] ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ (BFS), ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (DFS)

BFS (Breadth-First Search) ์‹œ์ž‘ ๋…ธ๋“œ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ชจ๋“  ๋…ธ๋“œ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ํƒ์ƒ‰์ฒซ๋ฒˆ์งธ floor๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ•ด๋‹น floor์˜ ๋ชจ๋“  ๋…ธ๋“œ ๋ฐฉ๋ฌธํ•  ๋•Œ๊นŒ์ง€ ์ˆ˜ํ‰ ์ด๋™ํ•œ ๋ฒˆ ๊ฑฐ์นœ ๋…ธ๋“œ ์ˆœ์„œ ์ €์žฅํ•œ ํ›„ ๋‹ค์‹œ ๊บผ๋‚ด๋Š” FIFO ์ฃผ๋กœ Queue๋กœ ๊ตฌํ˜„ DFS (Depth-First Search) ์‹œ์ž‘ ๋…ธ๋“œ์™€ ์ง์ ‘ ์—ฐ๊ด€๋œ ํ•˜์œ„ ๋…ธ๋“œ์˜ ๋๊นŒ์ง€ ๋ชจ๋‘ ํƒ์ƒ‰ํ•œ ํ›„ ๋‹ค์Œ ํ•˜์œ„ ๋…ธ๋“œ ํƒ์ƒ‰๊ฒฝ๋กœ ํ•˜๋‚˜์˜ ๋ชจ๋“  floor ํƒ์ƒ‰ํ•œ ๋’ค ๊ทธ ๋‹ค์Œ ๊ฒฝ๋กœ์˜ ๋ชจ๋“  floor ํƒ์ƒ‰ํ•˜๋Š” ์ˆœ์„œ์ฃผ๋กœ ์žฌ๊ท€ํ˜ธ์ถœ์ด๋‚˜ Stack ๋ช…์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„

Algorithm 2024.11.13

[Bronze II/JAVA] 84753226 ์ƒ์ˆ˜

https://www.acmicpc.net/problem/2908   ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๋Š” reverse() ๋ฅผ ์•Œ๋ฉด ์ข€ ๋” ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ ํ•œ๋ฒˆ์— ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ณต๋ฐฑ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ฒ˜๋ฆฌํ–ˆ๋Š”๋ฐ ์ด๊ฒŒ ํ›จ์”ฌ ์ข‹์€ ์ฝ”๋“œ๊ฐ™๋‹ค.๋‚˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ž…๋ ฅ๋ฐ›๊ณ  ๊ฐ๊ฐ ๋’ค์ง‘๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์กŒ๋‹ค.split์œผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ตœ๋Œ“๊ฐ’๋„ Maxํ•จ์ˆ˜๋กœ ๊ฐ„๋‹จํžˆ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚ด ํ’€์ดimport java.util.*;class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String a = sc.next(); String b = sc..

Algorithm/BOJ 2024.11.02

[Bronze II/JAVA] 10809 ์•ŒํŒŒ๋ฒณ ์ฐพ๊ธฐ

https://www.acmicpc.net/problem/10809   ๋ฌธ์ž์—ด์ด ์ฒ˜์Œ ๋‚˜ํƒ€๋‚œ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒŒ ํ—ท๊ฐˆ๋ฆผ์•ŒํŒŒ๋ฒณ (A-Z) ์ด ์ด 26๊ฐœ์ธ ๊ฒƒ์„ ์•Œ์•„์•ผ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ์ž…๋ ฅ๊ฐ’์˜ ์›์†Œ์™€ ๋น„๊ต'์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜' ๋ผ๋Š” ์ถœ๋ ฅ ์กฐ๊ฑด์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด์„ -1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด c๊ฐ€ 'a'๋ผ๋ฉด c-'a'๋Š” 0์ด๋ฏ€๋กœ arr[0]์€ 'a'์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.๋งˆ์ฐฌ๊ฐ€์ง€๋กœ c๊ฐ€ 'b'๋ผ๋ฉด c-'a'๋Š” 1์ด๋ฏ€๋กœ arr[1]์€ 'b'์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.์ฆ‰ , arr[c-'a']๋Š” ๋ฌธ์ž c๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ํ’€์ดimport java.io.*;class Main{ public static void main(String[] args) throws..

Algorithm/BOJ 2024.10.29

[Bronze II/JAVA] 10811 ๋ฐ”๊ตฌ๋‹ˆ ๋’ค์ง‘๊ธฐ

https://www.acmicpc.net/problem/10811  ๋ฐฐ์—ด ์ธ๋ฑ์Šค ์ฃผ์˜ํ•  ๊ฒƒ (์ฒซ๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ๋Š” 1, ๋‘๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ๋Š” 2... ๋ฐฐ์—ด์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘)์™ผ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ i๋ฒˆ์งธ๋ถ€ํ„ฐ j๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ๊นŒ์ง€ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“ ๋‹ค -> i ๋‚ด ํ’€์ด import java.util.*;class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); int[] arr = new int[N]; for(int i=0; i

Algorithm/BOJ 2024.10.25

[Bronze II/JAVA] 3052 ๋‚˜๋จธ์ง€

https://www.acmicpc.net/problem/3052   ๋ฐฐ์—ด๊ณผ HashSet์œผ๋กœ ํ’€์ดํ•  ์ˆ˜ ์žˆ์Œ๋ฐฐ์—ด๋กœ ์ž…๋ ฅ๋ฐ›์•„์„œ ์ด์ค‘for๋ฌธ์„ ๋Œ๋ ค์„œ ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ cnt๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , cnt๊ฐ€ 0์ด๋ฉด ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— diff๋ฅผ ์นด์šดํŠธํ•ด์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋‚˜๋จธ์ง€๋ฅผ ์ฒดํฌํ–ˆ๋‹ค๋ฌธ์ œ๋Š” ์ž…๋ ฅ๊ฐ’์ด 10๊ฐœ๋ฟ์ด์˜€์ง€๋งŒ ์ž…๋ ฅ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋Š” ๊ฒฝ์šฐ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค  ๋‚ด ํ’€์ด import java.util.*;class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int[] arr = new int[10]; int diff = 0;..

Algorithm/BOJ 2024.10.23

[Bronze II/JAVA] 10813 ๊ณต ๋ฐ”๊พธ๊ธฐ

https://www.acmicpc.net/problem/10813   ์•ž์„œ ํ’€์—ˆ๋˜ ๊ณต๋„ฃ๊ธฐ ๋ฌธ์ œ๋ฅผ ์‘์šฉํ•œ ๋ฌธ์ œ๋ผ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹คswap ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ๋ฌธ์ œ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ์ฃผ์˜ํ•ด์„œ ํ’€์ด ๋‚ด ํ’€์ด import java.util.*;class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); //๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ”๊ตฌ๋‹ˆ ๊ฐœ์ˆ˜ int N = sc.nextInt(); int[] arr = new int[N]; //๋ฐ”๊ฟ€ ํšŸ์ˆ˜ int M = sc.nextInt(); for(int i=0; i

Algorithm/BOJ 2024.10.21

[Bronze III/JAVA] 10810 ๊ณต ๋„ฃ๊ธฐ

https://www.acmicpc.net/problem/10810  ์—ฌ๋Ÿฌ๋ฒˆ ์ฝ๊ณ  ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ–ˆ๋‹คํ•ด๊ฒฐ๋ฐฉ๋ฒ• ์ž์ฒด๋Š” ์‰ฌ์šด๋ฐ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ index ๋ฒ”์œ„๋ฅผ ์ฃผ์˜ํ•ด์•ผํ•จ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ๋ฌธ์ œ์—์„œ ๋งํ•˜๋Š” 2๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๋ถ€ํ„ฐ 5๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๋Š” ๋ฐฐ์—ด๋กœ ๋”ฐ์ง€๋ฉด 1๋ฒˆ๋ถ€ํ„ฐ 4๋ฒˆ์ผ ๊ฒƒ๋”ฐ๋ผ์„œ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•  ๋•Œ -1์„ ํ•ด์•ผํ•จ ๋‚ด ํ’€์ด import java.util.*;class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); //๋ฐ”๊ตฌ๋‹ˆ๋ฅผ N๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ์Œ int n = sc.nextInt(); int[] arr = new int[n]; ..

Algorithm/BOJ 2024.10.20