๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)315

[๋ฐฑ์ค€,c++] 10775๋ฒˆ - ๊ณตํ•ญ ๋ฌธ์ œ 10775๋ฒˆ: ๊ณตํ•ญ ์˜ˆ์ œ 1 : [2][?][?][1] ํ˜•ํƒœ๋กœ ๋„ํ‚น์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 3๋ฒˆ์งธ ๋น„ํ–‰๊ธฐ๋Š” ๋„ํ‚น์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค. ์˜ˆ์ œ 2 : [1][2][3][?] ํ˜•ํƒœ๋กœ ๋„ํ‚น ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ , 4๋ฒˆ์งธ ๋น„ํ–‰๊ธฐ๋Š” ์ ˆ๋Œ€ ๋„ํ‚น ์‹œํ‚ฌ ์ˆ˜ ์—†์–ด์„œ ์ดํ›„ ์ถ”๊ฐ€์ ์ธ ๋„ํ‚น์€ ๋ถˆ www.acmicpc.net ์ฝ”๋“œ #include using namespace std; int parent[100001]; int G, P, ans; int find(int x){ if(x == parent[x]) return x; else return parent[x] = find(parent[x]); } void union_parent(int a, int b){ a = find(a); b = find(b); parent[a] = b; } int ma.. 2022. 9. 2.
[๋ฐฑ์ค€,c++] 4195๋ฒˆ - ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ 4195๋ฒˆ: ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„์˜ ์ˆ˜ F๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ์ด ๊ฐ’์€ 100,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค์Œ F๊ฐœ์˜ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ์ƒ๊ธด ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„ www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int N; unordered_map parent; unordered_map connect_cnt; string find_parent(string x){ if(x == parent[x]) return x; else return parent[x] = find_parent(parent[x]); } void union_parent(string a, string b){ a = f.. 2022. 9. 2.
[๋ฐฑ์ค€,c++] 18116๋ฒˆ - ๋กœ๋ด‡ ์กฐ๋ฆฝ ๋ฌธ์ œ 18116๋ฒˆ: ๋กœ๋ด‡ ์กฐ๋ฆฝ ์„ฑ๊ทœ๋Š” ๋กœ๋ด‡์„ ์กฐ๋ฆฝํ•ด์•ผ ํ•œ๋‹ค. ์ƒ์ž ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ ๋กœ๋ด‡์˜ ๋ถ€ํ’ˆ๋“ค์ด ์„ž์—ฌ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋–ค ๋ถ€ํ’ˆ์ด ์–ด๋Š ๋กœ๋ด‡์˜ ๋ถ€ํ’ˆ์ธ์ง€ ํ‘œ์‹œ๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค. ํ˜ธ์žฌ๋Š” ์ „์ž๊ณผ๋ผ์„œ ๋‘ ๋ถ€ํ’ˆ์„ ๋ณด๋ฉด ๊ฐ™์€ ๋กœ๋ด‡์˜ www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int N; int parent[1000001]; int child_cnt[1000001]; int find_parent(int x){ if(x == parent[x]) return x; else return parent[x] = find_parent(parent[x]); } void union_parent(int a, int b){ a = find_parent(a); b = find_p.. 2022. 9. 2.
[๋ฐฑ์ค€,c++] 17144๋ฒˆ - ๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•! ๋ฌธ์ œ 17144๋ฒˆ: ๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•! ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์‚ฌ๊ณผ๋Š” ๊ณต๊ธฐ์ฒญ์ •๊ธฐ๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ณต๊ธฐ์ฒญ์ •๊ธฐ์˜ ์„ฑ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์‚ฌ๊ณผ๋Š” ์ง‘์„ ํฌ๊ธฐ๊ฐ€ R×C์ธ ๊ฒฉ์žํŒ์œผ๋กœ ๋‚˜ํƒ€๋ƒˆ๊ณ , 1×1 ํฌ๊ธฐ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆด๋‹ค. ๊ตฌ์‚ฌ www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; int R, C, T; int map[51][51]; vector air_cleaner; int dx[4] = {0,0,-1,1}; int dy[4] = {-1,1,0,0}; struct SpreadInfo{ int amount; // ํ™•์‚ฐ๋œ ๋ฏธ์„ธ๋จผ์ง€ ์–‘ int r; int c; }; struct LeftInfo{ int amount; // ๋‚จ์€ ๋ฏธ์„ธ๋จผ์ง€ ์–‘ int .. 2022. 9. 2.
[๋ฐฑ์ค€,c++] 1761๋ฒˆ - ์ •์ ๋“ค์˜ ๊ฑฐ๋ฆฌ ๋ฌธ์ œ 1761๋ฒˆ: ์ •์ ๋“ค์˜ ๊ฑฐ๋ฆฌ ์ฒซ์งธ ์ค„์— ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ N์ด ์ž…๋ ฅ๋˜๊ณ  ๋‹ค์Œ N-1๊ฐœ์˜ ์ค„์— ํŠธ๋ฆฌ ์ƒ์— ์—ฐ๊ฒฐ๋œ ๋‘ ์ ๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์— M์ด ์ฃผ์–ด์ง€๊ณ , ๋‹ค์Œ M๊ฐœ์˜ ์ค„์— ๊ฑฐ๋ฆฌ๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๋…ธ๋“œ ์Œ์ด ํ•œ ์ค„์— ํ•œ ์Œ์”ฉ www.acmicpc.net ์ฝ”๋“œ #include #include #define MAX 40001 using namespace std; int N, M, max_height; int depth[MAX]; vectorgraph[MAX]; bool visited[MAX]; int parent[MAX][30]; int dist[MAX][30]; void dfs(int node, int _depth){ visited[node] = 1; depth[node] = _depth; for(.. 2022. 9. 1.
[๋ฐฑ์ค€,c++] 11438๋ฒˆ - LCA 2 ๋ฌธ์ œ 11438๋ฒˆ: LCA 2 ์ฒซ์งธ ์ค„์— ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง€๊ณ , ๋‹ค์Œ N-1๊ฐœ ์ค„์—๋Š” ํŠธ๋ฆฌ ์ƒ์—์„œ ์—ฐ๊ฒฐ๋œ ๋‘ ์ •์ ์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ†ต ์กฐ์ƒ์„ ์•Œ๊ณ ์‹ถ์€ ์Œ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง€๊ณ , ๋‹ค์Œ M๊ฐœ ์ค„์—๋Š” ์ • www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; vector graph[100001]; bool visited[100001]; int parent[100001][21]; int depth[100001]; int N, M, max_height; void dfs(int node, int _depth){ // ๋…ธ๋“œ ๊นŠ์ด ์„ธํŒ… visited[node] = 1; depth[node] = _depth; for(auto.. 2022. 8. 30.
[๋ฐฑ์ค€,c++] 16236๋ฒˆ - ์•„๊ธฐ ์ƒ์–ด ๋ฌธ์ œ 16236๋ฒˆ: ์•„๊ธฐ ์ƒ์–ด N×N ํฌ๊ธฐ์˜ ๊ณต๊ฐ„์— ๋ฌผ๊ณ ๊ธฐ M๋งˆ๋ฆฌ์™€ ์•„๊ธฐ ์ƒ์–ด 1๋งˆ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ๊ณต๊ฐ„์€ 1×1 ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ํ•œ ์นธ์—๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์ตœ๋Œ€ 1๋งˆ๋ฆฌ ์กด์žฌํ•œ๋‹ค. ์•„๊ธฐ ์ƒ์–ด์™€ ๋ฌผ๊ณ ๊ธฐ๋Š” ๋ชจ๋‘ ํฌ๊ธฐ๋ฅผ ๊ฐ€ www.acmicpc.net ์ฝ”๋“œ #include #include #include #include using namespace std; int N, _time; int map[21][21], cost[21][21]; int shark_r, shark_c, shark_size, now_eat_cnt; int dx[4] = {0,0,-1,1}; int dy[4] = {-1,1,0,0}; bool visited[21][21]; pair find_near_fish_coor(){ // ํ˜„.. 2022. 8. 28.
[๋ฐฑ์ค€,c++] 15686๋ฒˆ - ์น˜ํ‚จ ๋ฐฐ๋‹ฌ ๋ฌธ์ œ 15686๋ฒˆ: ์น˜ํ‚จ ๋ฐฐ๋‹ฌ ํฌ๊ธฐ๊ฐ€ N×N์ธ ๋„์‹œ๊ฐ€ ์žˆ๋‹ค. ๋„์‹œ๋Š” 1×1ํฌ๊ธฐ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๋„์‹œ์˜ ๊ฐ ์นธ์€ ๋นˆ ์นธ, ์น˜ํ‚จ์ง‘, ์ง‘ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๋„์‹œ์˜ ์นธ์€ (r, c)์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ด๊ณ , rํ–‰ c์—ด ๋˜๋Š” ์œ„์—์„œ๋ถ€ํ„ฐ r๋ฒˆ์งธ ์นธ www.acmicpc.net ์ฝ”๋“œ #include #include #include #include #define INF 1e9 using namespace std; int N, M; int map[51][51]; vector store; // ์น˜ํ‚จ์ง‘ ์ขŒํ‘œ bool is_store[51][51]; // ํ์—…ํ•˜์ง€ ์•Š์€ ์น˜ํ‚จ์ง‘์ธ์ง€ ์œ ๋ฌด int house_store_dist[51][51]; // ํ•ด๋‹น ์ง‘์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์น˜ํ‚จ์ง‘๊ณผ์˜ ๊ฑฐ๋ฆฌ int ans = INF; void .. 2022. 8. 26.
[๋ฐฑ์ค€,c++] 16234๋ฒˆ - ์ธ๊ตฌ ์ด๋™ ๋ฌธ์ œ 16234๋ฒˆ: ์ธ๊ตฌ ์ด๋™ N×Nํฌ๊ธฐ์˜ ๋•…์ด ์žˆ๊ณ , ๋•…์€ 1×1๊ฐœ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋•…์—๋Š” ๋‚˜๋ผ๊ฐ€ ํ•˜๋‚˜์”ฉ ์กด์žฌํ•˜๋ฉฐ, rํ–‰ c์—ด์— ์žˆ๋Š” ๋‚˜๋ผ์—๋Š” A[r][c]๋ช…์ด ์‚ด๊ณ  ์žˆ๋‹ค. ์ธ์ ‘ํ•œ ๋‚˜๋ผ ์‚ฌ์ด์—๋Š” ๊ตญ๊ฒฝ์„ ์ด ์กด์žฌํ•œ๋‹ค. ๋ชจ www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; int N,L,R, day; int map[51][51]; int line[51][51]; bool visited[51][51]; int dx[4] = {0, 0, -1, 1}; int dy[4] = {-1, 1, 0, 0}; bool line_check(){ bool flag = false; for(int i=0; i 2022. 8. 25.