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

Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป457

[๋ฐฑ์ค€,c++] 1967๋ฒˆ - ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ ๋ฌธ์ œ 1967๋ฒˆ: ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ n(1 ≤ n ≤ 10,000)์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ n-1๊ฐœ์˜ ์ค„์— ๊ฐ ๊ฐ„์„ ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋“ค์–ด์˜จ๋‹ค. ๊ฐ„์„ ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์„ธ ๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ •์ˆ˜๋Š” ๊ฐ„์„ ์ด ์—ฐ www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; int max_len = 0; int max_node; bool visited[10001]; int ans; vectorgraph[10002]; void dfs(int node, int len){ visited[node] = 1; if(max_len>N; for(int i=0; i>a>>b>>c; graph[a].push_back({b,c}); g.. 2022. 7. 11.
[๋ฐฑ์ค€,c++] 3584๋ฒˆ - ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ†ต ์กฐ์ƒ ๋ฌธ์ œ 3584๋ฒˆ: ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ†ต ์กฐ์ƒ ๋ฃจํŠธ๊ฐ€ ์žˆ๋Š” ํŠธ๋ฆฌ(rooted tree)๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ๊ทธ ํŠธ๋ฆฌ ์ƒ์˜ ๋‘ ์ •์ ์ด ์ฃผ์–ด์งˆ ๋•Œ ๊ทธ๋“ค์˜ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ†ต ์กฐ์ƒ(Nearest Common Anscestor)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ†ต ์กฐ์ƒ์€, ๋‘ www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; bool visited[10001]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int T; cin >> T; while (T--) { int N; cin >> N; vectorgraph(N + 1); for (int i = 1; i > a >> b; g.. 2022. 7. 11.
[๋ฐฑ์ค€,c++] 14675๋ฒˆ - ๋‹จ์ ˆ์ ๊ณผ ๋‹จ์ ˆ์„  ๋ฌธ์ œ 14675๋ฒˆ: ๋‹จ์ ˆ์ ๊ณผ ๋‹จ์ ˆ์„  ํ”„๋กœ๊ทธ๋žจ์˜ ์ž…๋ ฅ์€ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. ์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํŠธ๋ฆฌ์˜ ์ •์  ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 100,000) ํŠธ๋ฆฌ์˜ ์ •์ ์€ 1๋ฒˆ๋ถ€ํ„ฐ n๋ฒˆ๊นŒ์ง€ ์กด์žฌํ•œ๋‹ค. ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ N-1๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๊ฐ„์„ ์˜ ์ • www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; vectorgraph; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N; cin>>N; graph.resize(N+1); for(int i=0; i>a>>b; graph[a].push_back(b); graph[b].push_back(a); } int q; cin>>q; for(int i=0;.. 2022. 6. 30.
[๋ฐฑ์ค€,c++] 6416๋ฒˆ - ํŠธ๋ฆฌ์ธ๊ฐ€? ๋ฌธ์ œ 6416๋ฒˆ: ํŠธ๋ฆฌ์ธ๊ฐ€? ํŠธ๋ฆฌ๋Š” ๊ต‰์žฅํžˆ ์ž˜ ์•Œ๋ ค์ง„ ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋‹ค. ํŠธ๋ฆฌ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ๋น„์–ด ์žˆ๊ฑฐ๋‚˜(๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 0๊ฐœ), ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ ์ด์ƒ์ด๊ณ  ๋ฐฉํ–ฅ ๊ฐ„์„ ์ด ์กด์žฌํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค. www.acmicpc.net ์ฝ”๋“œ #include #include #include #include #include #define MAX 101 using namespace std; vectorindegree[MAX + 1]; unordered_map outdegree; // node, cnt unordered_set node; int edge_cnt = 0; int remove_leaf() { queue q; int remove_cnt = 0; for (auto cur : node) { .. 2022. 6. 30.
[๋ฐฑ์ค€,c++] 1068๋ฒˆ - ํŠธ๋ฆฌ ๋ฌธ์ œ 1068๋ฒˆ: ํŠธ๋ฆฌ ์ฒซ์งธ ์ค„์— ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” 0๋ฒˆ ๋…ธ๋“œ๋ถ€ํ„ฐ N-1๋ฒˆ ๋…ธ๋“œ๊นŒ์ง€, ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋งŒ์•ฝ ๋ถ€๋ชจ๊ฐ€ ์—†๋‹ค๋ฉด (๋ฃจํŠธ) -1์ด ์ฃผ์–ด์ง„๋‹ค www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; vectorv[51]; bool visited[51]; int N, root; int cnt; void dfs(int start){ if(v[start].empty()){ cnt++; return; } else if(v[start].size()==1){ if(visited[v[start].front()] == true) cnt++; } for(auto it: v.. 2022. 6. 21.
[๋ฐฑ์ค€,c++] 5539๋ฒˆ - ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ ๋ฌธ์ œ 5639๋ฒˆ: ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ ํŠธ๋ฆฌ๋ฅผ ์ „์œ„ ์ˆœํšŒํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋…ธ๋“œ์— ๋“ค์–ด์žˆ๋Š” ํ‚ค์˜ ๊ฐ’์€ 106๋ณด๋‹ค ์ž‘์€ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค. ๋ชจ๋“  ๊ฐ’์€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง€๋ฉฐ, ๋…ธ๋“œ์˜ ์ˆ˜๋Š” 10,000๊ฐœ ์ดํ•˜์ด๋‹ค. ๊ฐ™์€ ํ‚ค๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋Š” ์—†๋‹ค www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; vectorv; void postorder(int start, int end){ if(start>end) return; if(start==end){ cout 2022. 6. 21.
[๋ฐฑ์ค€,c++] 9934๋ฒˆ - ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ๋ฌธ์ œ 9934๋ฒˆ: ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ์ƒ๊ทผ์ด๋Š” ์Šฌ๋กœ๋ฒ ๋‹ˆ์•„์˜ ๋„์‹œ Donji Andrijevci๋ฅผ ์—ฌํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๋„์‹œ์˜ ๋„๋กœ๋Š” ๊นŠ์ด๊ฐ€ K์ธ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค. ๊นŠ์ด๊ฐ€ K์ธ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋Š” ์ด 2K-1๊ฐœ์˜ ๋…ธ๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. (์•„๋ž˜ www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; vectorheight[1025]; vectorv(1025); void inorder(int start, int end, int level){ if(start > end) return; int mid = (start+end)/2; height[level].push_back(v[mid]); inorder(start, mid-1, level+1).. 2022. 6. 21.
[๋ฐฑ์ค€,c++] 1655๋ฒˆ - ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š” ๋ฌธ์ œ 1655๋ฒˆ: ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š” ์ฒซ์งธ ์ค„์—๋Š” ๋ฐฑ์ค€์ด๊ฐ€ ์™ธ์น˜๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ N์ค„์— ๊ฑธ์ณ์„œ ๋ฐฑ์ค€์ด๊ฐ€ ์™ธ์น˜๋Š” ์ •์ˆ˜๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ •์ˆ˜๋Š” -1 www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); priority_queue left; priority_queue right; int N; cin>>N; for(int i=1; i>inp; if(i==1) left.push(inp); else if(right.empty()){ if(left.top(.. 2022. 6. 21.
[๋ฐฑ์ค€,c++] 12764๋ฒˆ - ์‹ธ์ง€๋ฐฉ์— ๊ฐ„ ์ค€ํ•˜ ๋ฌธ์ œ 12764๋ฒˆ: ์‹ธ์ง€๋ฐฉ์— ๊ฐ„ ์ค€ํ•˜ ์ฒซ์งธ ์ค„์— ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” \(N\)์ด ์ฃผ์–ด์ง„๋‹ค. \((1 \le N \le 100,000)\) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ \(N\)๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ๊ฐ ์‚ฌ๋žŒ์˜ ์ปดํ“จํ„ฐ ์ด์šฉ ์‹œ์ž‘ ์‹œ๊ฐ \(P\)์™€ ์ข…๋ฃŒ ์‹œ๊ฐ \(Q\)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. \((0 \le P \lt Q \le 1,000 www.acmicpc.net ์ฝ”๋“œ #include #include #include #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N; cin>>N; priority_queue min_heap; // {๋๋‚˜๋Š” ์‹œ๊ฐ„, ์ขŒ์„๋ฒˆํ˜ธ} priority_queue seats; // {์ขŒ์„๋ฒˆํ˜ธ, ๋๋‚˜.. 2022. 6. 20.