BOJ 1717: ์ง‘ํ•ฉ์˜ ํ‘œํ˜„
Coding Test 2022. 7. 22. 15:18

๋ฐฐ์› ๋˜ Union-Find๋ฅผ ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด ํ’€์–ด๋ดค์Šต๋‹ˆ๋‹ค. ๋™๋นˆ๋‚˜ ์œ ํŠœ๋ฒ„ ๋‹˜์ด ๊ตฌํ˜„ํ•œ ํ•จ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ•œ ์ด์šฉํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. 3๊ฐœ ํ•จ์ˆ˜(getParent, unionParent, findParent) ๋ชจ๋‘ ์ด์šฉํ•˜๊ณ  ์ธ์ž์— ๋ถ€๋ชจ ๋…ธ๋“œ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋”๋‹ˆ ์‹œ๊ฐ„์ดˆ๊ณผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 1) ํ•จ์ˆ˜ ํ•˜๋‚˜๋ฅผ ์ค„์ด๊ณ  2) ์ธ์ž๋ฅผ ํ†ตํ•ด ๋ถ€๋ชจ ๋…ธ๋“œ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•˜๋Š” ๋Œ€์‹  ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•˜๋‹ˆ ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. (getParent, unionParent ์‚ฌ์šฉ) ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋๋˜ ์ฝ”๋“œ #include using namespace std; int n, m; int getParent(int parent[], int x) { if(parent[x] == x) return x; return pa..

Union-Find (ํ•ฉ์ง‘ํ•ฉ ์ฐพ๊ธฐ)
Coding Test 2022. 7. 22. 15:08

Union-Find๋Š” ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํ•ฉ์ง‘ํ•ฉ ์ฐพ๊ธฐ ๋˜๋Š” ์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint-Set) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ™์€ ๊ทธ๋ž˜ํ”„ ๋‚ด์— ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ๋…ธ๋“œ๋“ค์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. Union-Find๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฐ์—ด์ด ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ชจ๋“  ๊ฐ’์ด ์ž๊ธฐ ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ‘œ์™€ ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ฆฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ 1 2 3 4 5 6 7 8 ๋…ธ๋“œ์˜ ๋ถ€๋ชจ 1 2 3 4 5 6 7 8 ์ดํ›„ 2๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ค‘ ๋” ์ž‘์€ ๊ฐ’์œผ๋กœ ๋ถ€๋ชจ ๋…ธ๋“œ ๋ฐฐ์—ด ๊ฐ’์„ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค. ๋งŒ์•ฝ 1๊ณผ 2๊ฐ€ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด 2์˜ ๋ถ€๋ชจ ๋…ธ๋“œ ์•„๋ž˜์™€ ๊ฐ™์ด 1๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ๋ถ€๋ชจ์˜ ๊ฐ’์ด ๊ฐ™์•„์ง์œผ๋กœ์จ ๋…ธ๋“œ๋“ค์„ ํ•ฉ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (Union ์•Œ๊ณ ..

2022 ์ƒ๋ฐ˜๊ธฐ ์‚ผ์„ฑSDS ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ›„๊ธฐ
Coding Test 2022. 7. 22. 10:48

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ›„๊ธฐ ์ข€ ๋งŽ์ด ์ง€๋‚˜๊ธด ํ–ˆ์ง€๋งŒ 2022๋…„ 5์›” 1์ผ์— ์žˆ์—ˆ๋˜ ์‚ผ์„ฑSDS ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ›„๊ธฐ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ›„๊ธฐ๋ผ๊ธฐ๋ณด๋‹ค๋Š” ์–ด๋–ป๊ฒŒ ์ค€๋น„ํ–ˆ์—ˆ๋Š”์ง€๊ฐ€ ๋” ๋งž๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ผ๋‹จ ๊ธฐ๋กํ•ด๋‘๋ฉด ๋ฆฌ๋งˆ์ธ๋“œํ•˜๋ฉด์„œ ๋‹ค์‹œ ๊ณต๋ถ€ํ•  ๋งˆ์Œ์„ ์žก์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ์š” :) ์ž˜ ์•Œ๋ ค์ง„ ๋Œ€๋กœ ์‚ผ์„ฑ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋Š” 3์‹œ๊ฐ„ ๋™์•ˆ 2๋ฌธ์ œ๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค! ์ €๋Š” 1๋ฌธ์ œ๋งŒ ํŒฌ๋‹ค...๋ผ๋Š” ๋งˆ์Œ๊ฐ€์ง์œผ๋กœ 3์‹œ๊ฐ„ ๋™์•ˆ 1๋ฌธ์ œ๋ฅผ ์—ด์‹ฌํžˆ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์˜คํ›„ ์‹œ๊ฐ„์ด์—ˆ๋Š”๋ฐ ๋‹น์—ฐํžˆ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๊ฐ€ ๋” ์‰ฝ๊ฒ ์ง€ ์ƒ๊ฐํ•ด์„œ ๋จผ์ € ์—ด์–ด์„œ ํ’€์—ˆ์–ด์š”. ๊ทผ๋ฐ ๋‹ค ํ’€๊ณ  ๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ ์—ด์–ด๋ณด๋‹ˆ ๋‘๋ฒˆ์งธ ๋ฌธ์ œ๊ฐ€ ๋” ์‰ฌ์› ๋˜... ๋ฌธ์ œ ์˜คํ”ˆ ์‹œ๊ฐ„์— ๋”ฐ๋ผ์„œ๋„ ํ•ฉ๊ฒฉ ์—ฌ๋ถ€๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ๋ง์ด ์žˆ์–ด์„œ ์‰ฝ์‚ฌ๋ฆฌ ๋‘๋ฒˆ์งธ ๋ฌธ์ œ๋ฅผ ์—ด์–ด๋ณด์ง€ ๋ชปํ–ˆ์–ด์š”. ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋ฅผ ์ญ‰ ์ฝ์–ด๋ณด๋Š”๋ฐ ๋ฌธ์ œ ์ดํ•ด๋Š” ..

<C/C++> BOJ 15683 ๊ฐ์‹œ
Coding Test 2022. 5. 6. 15:03

15683๋ฒˆ: ๊ฐ์‹œ ์Šคํƒ€ํŠธ๋งํฌ์˜ ์‚ฌ๋ฌด์‹ค์€ 1×1ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” N×M ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ๋ฌด์‹ค์—๋Š” ์ด K๊ฐœ์˜ CCTV๊ฐ€ ์„ค์น˜๋˜์–ด์ ธ ์žˆ๋Š”๋ฐ, CCTV๋Š” 5๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๊ฐ CCTV๊ฐ€ ๊ฐ www.acmicpc.net #include #include #include using namespace std; #define INF ((int)1e9) struct cctv { int r, c, num, dir; }; int N, M, ans; int map[8][8]; static int dr[4] = { -1, 0, 1, 0 }; static int dc[4] = { 0, 1, 0, -1 }; vector cctvs, cctv_5; void CountZero() { int ..

<C/C++> BOJ 12100 2048(Easy)
Coding Test 2022. 5. 4. 09:51

https://www.acmicpc.net/problem/12100 12100๋ฒˆ: 2048 (Easy) ์ฒซ์งธ ์ค„์— ๋ณด๋“œ์˜ ํฌ๊ธฐ N (1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฒŒ์ž„ํŒ์˜ ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 0์€ ๋นˆ ์นธ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ด์™ธ์˜ ๊ฐ’์€ ๋ชจ๋‘ ๋ธ”๋ก์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ธ”๋ก์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋Š” 2 www.acmicpc.net #include using namespace std; enum { UP, DOWN, LEFT, RIGHT }; struct board_t { int b[20][20]; }; int N; int maxVal; void moveTo(board_t& board, int dir) { for (int i = 0; i < N; i++) { bool isPossible = true..

<C/C++> BOJ 14501: ํ‡ด์‚ฌ
Coding Test 2022. 5. 3. 10:21

https://www.acmicpc.net/problem/14501 14501๋ฒˆ: ํ‡ด์‚ฌ ์ฒซ์งธ ์ค„์— ๋ฐฑ์ค€์ด๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ์ถœ๋ ฅํ•œ๋‹ค. www.acmicpc.net ์˜ˆ์ „์— ํ’€์—ˆ๋˜ ๋ฌธ์ œ์ธ๋ฐ ์ง€๊ธˆ ๋‹ค์‹œ๋ณด๋‹ˆ DFS๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋„ค์š”! #include #include using namespace std; #define MAXN 15 int N; // N+1์ผ์— ํ‡ด์‚ฌ int T[MAXN + 5]; // ์ƒ๋‹ด ์™„๋ฃŒํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๊ธฐ๊ฐ„ int P[MAXN + 5]; // ์ƒ๋‹ด ํ–ˆ์„ ๋•Œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ธˆ์•ก int C[MAXN + 5]; int sol; void InputData(void) { cin >> N; for (int i = 1; i > T[i] >> P[i]; } } int max(int a,..