[c++] BOJ 2250 :: ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ๋„ˆ๋น„
Algorithm ๋ฌธ์ œ/BOJ 2021. 6. 2. 21:58

๋‚œ์ด๋„ : ๊ณจ๋“œ 2 ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 1์‹œ๊ฐ„ ๋ฌธ์ œ ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ๋„ˆ๋น„ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ๋‹ค์Œ์˜ ๊ทœ์น™์— ๋”ฐ๋ผ ํ–‰๊ณผ ์—ด์— ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ๊ฒฉ์ž ๋ชจ์–‘์˜ ํ‹€ ์†์— ๊ทธ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ ๋‹ค์Œ์˜ ๊ทœ์น™์— ๋”ฐ๋ผ ๊ทธ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค. ์ด์ง„ํŠธ๋ฆฌ์—์„œ ๊ฐ™์€ ๋ ˆ๋ฒจ(level)์— ์žˆ๋Š” ๋…ธ๋“œ๋Š” ๊ฐ™์€ ํ–‰์— ์œ„์น˜ํ•œ๋‹ค. ํ•œ ์—ด์—๋Š” ํ•œ ๋…ธ๋“œ๋งŒ ์กด์žฌํ•œ๋‹ค. ์ž„์˜์˜ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ๋ถ€ํŠธ๋ฆฌ(left subtree)์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์€ ํ•ด๋‹น ๋…ธ๋“œ๋ณด๋‹ค ์™ผ์ชฝ์˜ ์—ด์— ์œ„์น˜ํ•˜๊ณ , ์˜ค๋ฅธ์ชฝ ๋ถ€ํŠธ๋ฆฌ(right subtree)์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์€ ํ•ด๋‹น ๋…ธ๋“œ๋ณด๋‹ค ์˜ค๋ฅธ์ชฝ์˜ ์—ด์— ์œ„์น˜ํ•œ๋‹ค. ๋…ธ๋“œ๊ฐ€ ๋ฐฐ์น˜๋œ ๊ฐ€์žฅ ์™ผ์ชฝ ์—ด๊ณผ ์˜ค๋ฅธ์ชฝ ์—ด ์‚ฌ์ด์—” ์•„๋ฌด ๋…ธ๋“œ๋„ ์—†์ด ๋น„์–ด์žˆ๋Š” ์—ด์€ ์—†๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ๊ทธ๋ฆด ๋•Œ ๊ฐ ๋ ˆ๋ฒจ์˜ ๋„ˆ๋น„๋Š” ๊ทธ ๋ ˆ๋ฒจ์— ํ• ๋‹น๋œ ๋…ธ๋“œ ์ค‘ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ..

[c++] BOJ 1525 :: ํผ์ฆ
Algorithm ๋ฌธ์ œ/BOJ 2021. 5. 26. 18:43

๋‚œ์ด๋„ : ๊ณจ๋“œ 2 ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 1์‹œ๊ฐ„ ๋ฌธ์ œ ํผ์ฆ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ 3×3 ํ‘œ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜๊ฐ€ ์ฑ„์›Œ์ ธ ์žˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ๊ฐ€์žฅ ๋ ์นธ์€ ๋น„์–ด ์žˆ๋Š” ์นธ์ด๋‹ค. 1 2 3 4 5 6 7 8 ์–ด๋–ค ์ˆ˜์™€ ์ธ์ ‘ํ•ด ์žˆ๋Š” ๋„ค ๊ฐœ์˜ ์นธ ์ค‘์— ํ•˜๋‚˜๊ฐ€ ๋น„์–ด ์žˆ์œผ๋ฉด, ์ˆ˜๋ฅผ ๊ทธ ์นธ์œผ๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๋ฌผ๋ก  ํ‘œ ๋ฐ”๊นฅ์œผ๋กœ ๋‚˜๊ฐ€๋Š” ๊ฒฝ์šฐ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ์†Œ์˜ ์ด๋™์œผ๋กœ ์œ„์™€ ๊ฐ™์€ ์ •๋ฆฌ๋œ ์ƒํƒœ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ํ’€์ด ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ์ด๋ฏ€๋กœ bfs ์ด์šฉ memo ํ•ด์•ผ ๋˜‘๊ฐ™์€ ๊ฒฝ๋กœ ๋‹ค์‹œ ํƒ์ƒ‰ x memo๋Š” ์ „์ฒด map์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ด์•ผํ•จ string์œผ๋กœ ์ €์žฅ ์ฝ”๋“œ #include #include #include #include #include using namespace std; int map[..

[c++] BOJ 9019 :: DSLR
Algorithm ๋ฌธ์ œ/BOJ 2021. 5. 26. 18:38

๋‚œ์ด๋„ : ๊ณจ๋“œ 5 ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 1์‹œ๊ฐ„ 30๋ถ„ ๋ฌธ์ œ DSLR ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ํ’€์ด DSLR์ด๋ผ๋Š” 4๊ฐ€์ง€ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  bfs ์ฝ”๋“œ #include #include #include using namespace std; struct point { int prev; char state; int visited = -1; }; char dslrArr[4] = { 'D', 'S', 'L', 'R' }; int dslrResult(int type, int num) { int tmp; switch (type) { case 0 : return (num* 2) % 10000; case 1 : if (num == 0) return 9999; else return num - 1; case 2 : tmp = num /..

[c++] BOJ 2146 :: ๋‹ค๋ฆฌ ๋งŒ๋“ค๊ธฐ
Algorithm ๋ฌธ์ œ/BOJ 2021. 5. 18. 18:57

๋‚œ์ด๋„ : ๊ณจ๋“œ 3 ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 30๋ถ„ ๋ฌธ์ œ ๋‹ค๋ฆฌ ๋งŒ๋“ค๊ธฐ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ 2146๋ฒˆ: ๋‹ค๋ฆฌ ๋งŒ๋“ค๊ธฐ ์—ฌ๋Ÿฌ ์„ฌ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋‚˜๋ผ๊ฐ€ ์žˆ๋‹ค. ์ด ๋‚˜๋ผ์˜ ๋Œ€ํ†ต๋ น์€ ์„ฌ์„ ์ž‡๋Š” ๋‹ค๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ฒ ๋‹ค๋Š” ๊ณต์•ฝ์œผ๋กœ ์ธ๊ธฐ๋ชฐ์ด๋ฅผ ํ•ด ๋‹น์„ ๋  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ง‰์ƒ ๋Œ€ํ†ต๋ น์— ์ทจ์ž„ํ•˜์ž, ๋‹ค๋ฆฌ๋ฅผ ๋†“๋Š”๋‹ค๋Š” ๊ฒƒ์ด ์•„๊น๋‹ค www.acmicpc.net ํ’€์ด ๊ฐ€์žฅ ์งง์€ ๋‹ค๋ฆฌ์˜ ๊ธธ์ด == ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‘ ์  ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ๋ชจ๋“  ์„ฌ ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์•ผ ํ•จ ๊ฐ ์„ฌ์— ์†ํ•œ ์ ๋“ค๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ์„ฌ์˜ ์ ๋“ค๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ ๊ฐ€์ค‘์น˜ ์—†์œผ๋ฏ€๋กœ bfs ์ด์šฉ ๊ฐ ์„ฌ์— ์†ํ•˜๋Š” ์ ๋“ค์€ bfs๋กœ ๋”ฐ๋กœ ์ฐพ๊ธฐ ์ฝ”๋“œ #include #include using namespace std; int map[101][101]; int direction[4][2] = { ..

[c++] BOJ 2589 :: ๋ณด๋ฌผ์„ฌ
Algorithm ๋ฌธ์ œ/BOJ 2021. 5. 18. 18:49

๋‚œ์ด๋„ : ๊ณจ๋“œ 5 ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 30๋ถ„ ๋ฌธ์ œ ๋ณด๋ฌผ์„ฌ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๋ณด๋ฌผ์„ฌ ์ง€๋„๋ฅผ ๋ฐœ๊ฒฌํ•œ ํ›„ํฌ ์„ ์žฅ์€ ๋ณด๋ฌผ์„ ์ฐพ์•„๋‚˜์„ฐ๋‹ค. ๋ณด๋ฌผ์„ฌ ์ง€๋„๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋ฉฐ ์—ฌ๋Ÿฌ ์นธ์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋‹ค. ๊ฐ ์นธ์€ ์œก์ง€(L)๋‚˜ ๋ฐ”๋‹ค(W)๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๋‹ค. ์ด ์ง€๋„์—์„œ ์ด๋™์€ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ด์›ƒํ•œ ์œก์ง€๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ•œ ์นธ ์ด๋™ํ•˜๋Š”๋ฐ ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๋ณด๋ฌผ์€ ์„œ๋กœ ๊ฐ„์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋กœ ์ด๋™ํ•˜๋Š”๋ฐ ์žˆ์–ด ๊ฐ€์žฅ ๊ธด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์œก์ง€ ๋‘ ๊ณณ์— ๋‚˜๋‰˜์–ด ๋ฌปํ˜€์žˆ๋‹ค. ์œก์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ๊ณณ ์‚ฌ์ด๋ฅผ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ๊ฐ™์€ ๊ณณ์„ ๋‘ ๋ฒˆ ์ด์ƒ ์ง€๋‚˜๊ฐ€๊ฑฐ๋‚˜, ๋ฉ€๋ฆฌ ๋Œ์•„๊ฐ€์„œ๋Š” ์•ˆ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์™€ ๊ฐ™์ด ์ง€๋„๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค๋ฉด ๋ณด๋ฌผ์€ ์•„๋ž˜ ํ‘œ์‹œ๋œ ๋‘ ๊ณณ์— ๋ฌปํ˜€ ์žˆ๊ฒŒ ๋˜๊ณ , ์ด ๋‘˜ ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋กœ ์ด๋™ํ•˜๋Š” ์‹œ๊ฐ„์€ 8์‹œ๊ฐ„์ด ๋œ๋‹ค. ๋ณด๋ฌผ..

[c++] BOJ 1707 :: ์ด๋ถ„ ๊ทธ๋ž˜ํ”„
Algorithm ๋ฌธ์ œ/BOJ 2021. 5. 12. 18:42

๋‚œ์ด๋„ : ๊ณจ๋“œ 4 ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : ์˜ค๋ž˜ ๊ฑธ๋ฆผ ๋ฌธ์ œ ์ด๋ถ„ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ ๊ทธ๋ž˜ํ”„์˜ ์ •์ ์˜ ์ง‘ํ•ฉ์„ ๋‘˜๋กœ ๋ถ„ํ• ํ•˜์—ฌ, ๊ฐ ์ง‘ํ•ฉ์— ์†ํ•œ ์ •์ ๋ผ๋ฆฌ๋Š” ์„œ๋กœ ์ธ์ ‘ํ•˜์ง€ ์•Š๋„๋ก ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ, ๊ทธ๋Ÿฌํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ํŠน๋ณ„ํžˆ ์ด๋ถ„ ๊ทธ๋ž˜ํ”„ (Bipartite Graph) ๋ผ ๋ถ€๋ฅธ๋‹ค. ๊ทธ๋ž˜ํ”„๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ๊ทธ๋ž˜ํ”„๊ฐ€ ์ด๋ถ„ ๊ทธ๋ž˜ํ”„์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ํ’€์ด bfs๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ๋‘ ๊ฐ€์ง€ ์ƒ‰์œผ๋กœ ์น ํ•˜๊ธฐ (1, -1) ์ด๋ฏธ ์น ํ•ด์ง„ ๊ณณ์ด ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ์•ผ ํ•œ๋‹ค๋ฉด ์ด๋ถ„ ๊ทธ๋ž˜ํ”„๊ฐ€ ์•„๋‹˜ ์ฝ”๋“œ #include #include #include #include using namespace std; vector vec[20001]; bool bfs(vector& check, int start) { queue..

[c++] BOJ 2206 :: ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ
Algorithm ๋ฌธ์ œ/BOJ 2021. 5. 11. 00:58

๋‚œ์ด๋„ : ๊ณจ๋“œ 4 ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : ์˜ค๋ž˜ ๊ฑธ๋ฆผ ๋ฌธ์ œ ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ ๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ N×M์˜ ํ–‰๋ ฌ๋กœ ํ‘œํ˜„๋˜๋Š” ๋งต์ด ์žˆ๋‹ค. ๋งต์—์„œ 0์€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ด๊ณ , 1์€ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ๋ฒฝ์ด ์žˆ๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹น์‹ ์€ (1, 1)์—์„œ (N, M)์˜ ์œ„์น˜๊นŒ์ง€ ์ด๋™ํ•˜๋ ค ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜๋ ค ํ•œ๋‹ค. ์ตœ๋‹จ๊ฒฝ๋กœ๋Š” ๋งต์—์„œ ๊ฐ€์žฅ ์ ์€ ๊ฐœ์ˆ˜์˜ ์นธ์„ ์ง€๋‚˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋งํ•˜๋Š”๋ฐ, ์ด๋•Œ ์‹œ์ž‘ํ•˜๋Š” ์นธ๊ณผ ๋๋‚˜๋Š” ์นธ๋„ ํฌํ•จํ•ด์„œ ์„ผ๋‹ค. ๋งŒ์•ฝ์— ์ด๋™ํ•˜๋Š” ๋„์ค‘์— ํ•œ ๊ฐœ์˜ ๋ฒฝ์„ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข€ ๋” ๊ฒฝ๋กœ๊ฐ€ ์งง์•„์ง„๋‹ค๋ฉด, ๋ฒฝ์„ ํ•œ ๊ฐœ ๊นŒ์ง€ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜์—ฌ๋„ ๋œ๋‹ค. ํ•œ ์นธ์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์€ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ธ์ ‘ํ•œ ์นธ์ด๋‹ค. ๋งต์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•ด ๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ํ’€์ด ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ์‚ดํŽด๋ณผ ํ•„์š”์—†..

[c++] BOJ 16236 :: ์•„๊ธฐ ์ƒ์–ด
Algorithm ๋ฌธ์ œ/BOJ 2021. 5. 3. 09:26

๋‚œ์ด๋„ : ๊ณจ๋“œ 4 ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : ใ…Žใ…Ž.. ์˜ค๋ž˜ ๊ฑธ๋ฆผ ๋ฌธ์ œ ์•„๊ธฐ ์ƒ์–ด ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ํ’€์ด bfs๋ฅผ ์ด์šฉํ•˜์—ฌ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ธฐ ์ฐพ๊ธฐ + ์ƒ์–ด๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ธฐ๋“ค ์ฐพ๊ธฐ ๊ทธ ์ค‘ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„์— ์žˆ๋Š” ๊ณ ๊ธฐ ์ฐพ๊ธฐ ์ƒ์–ด๊ฐ€ ํ•ด๋‹น ๋ฌผ๊ณ ๊ธฐ์˜ ์œ„์น˜๋กœ ์ด๋™ํ•ด์„œ ๋จน๊ณ , ๋จน์€ ๋ฌผ๊ณ ๊ธฐ ๊ฐœ์ˆ˜๊ฐ€ size์™€ ๊ฐ™์•„์ง€๋ฉด size ํ‚ค์šฐ๊ธฐ ์ƒ์–ด๋ณด๋‹ค ์ž‘์€ ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต ์ฝ”๋“œ #include #include #include using namespace std; struct shark { int r; int c; int size = 2; }; struct fish { int r; int c; int distance = 0; fish(int rp, int cp, int dist) { r = rp..