๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[๋ฐฑ์ค€] ์—ฐ๊ตฌ์†Œ 3 (์กฐํ•ฉ, bfs)

https://www.acmicpc.net/problem/17142 ํ’€์ด๊ณผ์ • 0. ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ ์ฑ„์›Œ์•ผ ํ•  ๋นˆ์นธ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. 1. ๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ™œ์šฉํ•ด์„œ ๋ฐ”์ด๋Ÿฌ์Šค๋“ค์˜ ์กฐํ•ฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 2. ์„ ํƒ๋œ ๋ฐ”์ด๋Ÿฌ์Šค๋“ค์— ๋Œ€ํ•ด bfs๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํผํŠธ๋ฆฝ๋‹ˆ๋‹ค. ๋ฐ”์ด๋Ÿฌ์Šค๋ฅผ ํผํŠธ๋ฆด ๋•Œ, ๋นˆ์นธ๊ณผ ๋ฐ”์ด๋Ÿฌ์Šค๊ฐ€ ์žˆ๋Š” ์นธ์— ๋Œ€ํ•ด ๊ตฌ๋ถ„ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋นˆ ์นธ์˜ ๊ฒฝ์šฐ 0๋ฒˆ ํ’€์ด๊ณผ์ •์—์„œ ์ €์žฅํ•œ ๋ชฉํ‘œ์™€ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด cnt๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ ์ค๋‹ˆ๋‹ค. ๋ฐ”์ด๋Ÿฌ์Šค์˜ ๊ฒฝ์šฐ cnt ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค์ง€ ์•Š๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ์™€ bfsํ์— ๋„ฃ๋Š” ๋™์ž‘๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” swea์˜ ์ง€๋ขฐ๋ฌธ์ œ์™€ ํ—ท๊ฐˆ๋ ค์„œ ๋ฐ”์ด๋Ÿฌ์Šค๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ณ„์† ํผ์ง€๋„๋ก ๊ตฌํ˜„ํ•ด์„œ ๊ณ„์† ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค ใ… ใ…  3. ๋นˆ ์นธ์„ ๋‹ค ์ฑ„์› ์œผ๋ฉด ์ด๋™ํ•œ ์‹œ๊ฐ„์„ return ํ•ฉ๋‹ˆ๋‹ค. bfs์—์„œ ์‹œ๊ฐ„์€ ๊ณ„์†..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

๋ฐฐ์—ด ์‹œ๊ณ„๋ฐฉํ–ฅ ํšŒ์ „ ๊ณต์‹

N = ํ–‰ ๊ธธ์ด M = ์—ด ๊ธธ์ด int[][] origin = { {1,2,3}, {4,5,6}, {7,8,9} }; // ์›๋ณธ ๋ฐฐ์—ด int[][] result; // ํšŒ์ „ ๋ฐฐ์—ด ์‹œ๊ณ„ ๋ฐฉํ–ฅ 90๋„ ํšŒ์ „ : (i,j) = (N-1-j, i) ํ˜น์€ (j, N-1-i) = (i,j) for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { rotate_arr[i][j] = arr[N - 1 - j][i]; } } ๋ฐ˜ ์‹œ๊ณ„ ๋ฐฉํ–ฅ 90๋„ ํšŒ์ „ : (i,j) = (j, N-1-i) ํ˜น์€ (N-1-j, i) = (i, j) for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { rotate_arr[i][j] = ar..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๊ตฌํ˜„ ์ฝ”๋“œ๋งŒ ๊ฐ„๋žตํ•˜๊ฒŒ ์ž‘์„ฑ..(์™ธ์šฐ๊ธฐ ์œ„ํ•ด์„œ ๐Ÿ˜‚) ๋ฆฌ์ŠคํŠธ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ ํฌ๋ฉงint N = 5; // ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜ Nint M = 5; // ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ถ€๋ถ„ ํ•ฉ Mint[] data = {1,2,3,2,5};int cnt = 0;int interval_sum = 0;int end = 0;for(int start=0;start

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[๋ฐฑ์ค€] ๋“œ๋ž˜๊ณค ์ปค๋ธŒ (๊ตฌํ˜„)

๋ฌธ์ œ : https://www.acmicpc.net/problem/15685 ํ’€์ด๊ณผ์ • 1. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 1-1. ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™œ์šฉ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ํ˜„์žฌ๊นŒ์ง€ ๋งŒ๋“ค์–ด์ง„ ๋ชจ์–‘์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ๋ชจ์–‘์„ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ๋ฐฉํ–ฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. 1-2. 90๋„ ํšŒ์ „ 90๋„ ํšŒ์ „์˜ ๊ฒฝ์šฐ 0 ๋ฐฉํ–ฅ์€ 1 1 ๋ฐฉํ–ฅ์€ 2 2 ๋ฐฉํ–ฅ์€ 3 3 ๋ฐฉํ–ฅ์€ 0 ์ด ๋ฉ๋‹ˆ๋‹ค. (ํ˜„์žฌ๋ฐฉํ–ฅ+1)%4 ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. static void update_history(){ // g๋ฒˆ ์ด๋™์‹œํ‚ค๊ธฐ for(int i=0;i=0;j--){ history.add((history.get(j)+1)%4); } } } 1-3. ๋‘ ๋ฒˆ ์ด๋™ ์‹œํ‚ค๊ธฐ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋“œ..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”„๋กœ์„ธ์Šค (์šฐ์„ ์ˆœ์œ„ํ)

๋ฌธ์ œ : https://school.programmers.co.kr/learn/courses/30/lessons/42587 ํ’€์ด๊ณผ์ • 1. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘‰์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ํ™œ์šฉ O(logn)ํ•˜์—ฌ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. ๋ฌธ์ œ์˜ 2๋ฒˆ ์กฐ๊ฑด์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 2๋ฒˆ ์กฐ๊ฑด์˜ ๋™์ž‘์—์„œ ๋‹ค์‹œ ํ์— ๋„ฃ๋Š” ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด (2,1)์€ ๋’ค๋กœ ๊ฐ€์•ผํ•˜๋Š”๋ฐ ์ด๋•Œ ๋’ค๋กœ ๊ฐ€๋Š” (2,1)์˜ ์ˆœ์„œ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ํ•„์š” ์—†์ด ์ฃผ์–ด์ง„ priorities ๋ฐฐ์—ด๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฌดํ•œ์ˆœํšŒ(?)ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 3. ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์ •๋‹ต์ธ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด๋“ค์„ ๋ฌดํ•œ์ˆœํšŒ(2๋ฒˆ ํ’€์ด๊ณผ์ •) ํ•˜๋ฉฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜์ƒ

๋ฌธ์ œ์ถœ์ฒ˜ : https://school.programmers.co.kr/learn/courses/30/lessons/42578 ํ’€์ด๊ณผ์ • ์ฒ˜์Œ์˜ ์ ‘๊ทผ : ์˜ท ์ข…๋ฅ˜ ๋ณ„ ๊ฐฏ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๋ฐฐ์—ด์„ ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๊ณ„์‚ฐ์„ ์ง„ํ–‰ํ•˜๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋งŒ์กฑํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ ‘๊ทผ์— ๋Œ€ํ•œ ์ƒ๊ฐ : ์ง„ ๋ถ€๋ถ„์ง‘ํ•ฉ์— ๋Œ€ํ•ด ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง„ ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ๊ฐฏ์ˆ˜๋Š” 2^n - 1 ์ด๋ฏ€๋กœ, ์ด ๋ฌธ์ œ์—์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ n = 30์ด ๋˜๋ฏ€๋กœ ์ฒ˜์Œ์˜ ์ ‘๊ทผ๊ณผ ๊ฐ™์ด ์™„์ „ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋ฉด ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ํ’€์ด 1. ์˜ท ์ข…๋ฅ˜๋ณ„๋กœ ์˜ท์˜ ๊ฐฏ์ˆ˜๋ฅผ + 1 ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ +1์€ (์ž…์ง€์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค) 2. +1๋œ ์˜ท ์ข…๋ฅ˜๋ณ„ ์˜ท์˜ ๊ฐฏ์ˆ˜๋“ค ๋ผ๋ฆฌ์˜..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ์˜ ๊ฐœ์ˆ˜

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://school.programmers.co.kr/learn/challenges ํ’€์ด๊ณผ์ • ์šฐ์„  ๋ฐฉ์ด ์ƒ์„ฑ๋˜๋Š” ์กฐ๊ฑด์— ๋Œ€ํ•ด ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ์ด ์ƒ์„ฑ๋˜๋Š” ์กฐ๊ฑด์€ 1. ์ด์ „์— ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ •์ ์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•จ 2. ์ด์ „์— ์—ฐ๊ฒฐํ•œ ์„ ๋ถ„์ด ์•„๋‹Œ ์ƒˆ๋กœ ์ƒ๊ธด ์„ ๋ถ„์ด์–ด์•ผ ํ•จ ๊ฐ ์ •์ ์— ๋Œ€ํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณผ์ •์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ๊ธฐ์กด์˜ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ์™€ ๋‹ค๋ฅด๊ฒŒ ์ธ์ ‘ํ–‰๋ ฌ์ด๋‚˜ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋กœ๋Š” ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. arrows์˜ ํฌ๊ธฐ๊ฐ€ 1 ์ด์ƒ 100,000์ดํ•˜๋ผ๋Š” ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ์ธ์ ‘ ํ–‰๋ ฌ์˜ ๊ฒฝ์šฐ200_001 * 200_001 ์˜ ํฌ๊ธฐ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด HashMap ์ž๋ฃŒ๊ตฌ์กฐ์™€ Node ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

์ด๋ถ„ํƒ์ƒ‰

์ด๋ถ„ํƒ์ƒ‰์€ ํฌ๊ฒŒ ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜, lower bound์™€ upper bound๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒฝ์šฐ = ์ค‘๋ณต์›์†Œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์Œlower bound์™€ upper bound = ์ค‘๋ณต์›์†Œ๋ฅผ ๊ณ ๋ ค์กด์žฌ์—ฌ๋ถ€ ํŒŒ์•… (์ค‘๋ณต์›์†Œ ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ)public static int binarySearch(int[] arr, int key) { int lo = 0; // ํƒ์ƒ‰ ๋ฒ”์œ„์˜ ์™ผ์ชฝ ๋ ์ธ๋ฑ์Šค int hi = arr.length - 1; // ํƒ์ƒ‰ ๋ฒ”์œ„์˜ ์˜ค๋ฅธ์ชฝ ๋ ์ธ๋ฑ์Šค while(lo arr[mid]) { lo = mid + 1; } }} ์ค‘๋ณต์›์†Œ ๊ณ ๋ คlower boundprivate static int lowerBound(int[] arr, in..

mc.thd
'๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)