[ ๋ฌธ์ ๋งํฌ ]
https://www.acmicpc.net/problem/2164
๐ฉ ์กฐ๊ฑด
- ์ ๋ ฅ์ผ๋ก N์ ๋ฐ์. 1<=N<=500,000
- N์ฅ์ ์นด๋๊ฐ ์๊ณ , 1๋ฒ์ด ์ ์ผ ์์ ์์นํ๊ณ ์ฐจ๋ก๋๋ก ์ ๋ ฌ๋์ด ์์.
- ์นด๋๊ฐ ํ ์ฅ ๋จ์ ๋๊น์ง ๋ค์๊ณผ ๊ฐ์ ๋์์ ๋ฐ๋ณตํจ. "์ฐ์ , ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ๋ฐ๋ฅ์ ๋ฒ๋ฆฐ๋ค. ๊ทธ ๋ค์, ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ์ ์ผ ์๋์ ์๋ ์นด๋ ๋ฐ์ผ๋ก ์ฎ๊ธด๋ค."
- ๊ฐ์ฅ ๋ง์ง๋ง์ ๋จ๊ฒ ๋๋ ์นด๋๋ฅผ ๊ตฌํด๋ผ.
๐ฉ ์ ๊ทผ
2 -> N์ด ์ฃผ์ด์ง๊ณ 1๋ถํฐ ์ฐจ๋ก๋๋ก pushํ๋ค๊ณ ํ๋ฉด, ์ ์ ์ ์ถ์ด๋ฏ๋ก queue๋ก ๊ตฌํํ์
๐ฉ ์ํ์ฐฉ์ค
๊ตฌํ์ ์ฝ๋ค. ๊ทธ์น๋ง queue์ ๋ฉ์๋๋ค์ ํท๊ฐ๋ฆฌ์ง ๋ง์.
// ์๊ทผ ํท๊ฐ๋ฆฌ๋ ๋ฉ์๋๋ค..
queue.push_back(); // X
queue.push(); // O
queue.pop(); // O
queue.top(); // X
queue.front(); // O
๐ป ์ฝ๋ (C++)
#include <iostream>
#include <queue>
using namespace std;
queue<int> q;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin >> N;
for (int i = 1; i <= N; i++) {
q.push(i);
}
while (q.size() > 1) {
q.pop();
int top = q.front();
if (q.size() == 1) {
break;
}
else {
q.pop();
q.push(top);
}
}
cout << q.front();
}
'๐ป Algorithms > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 5397 ํค๋ก๊ฑฐ - ์ฐ๊ฒฐ ๋ฆฌ์คํธ (0) | 2024.08.24 |
---|---|
[๋ฐฑ์ค] 1260 DFS์ BFS - dfs, bfs (0) | 2024.08.20 |
[๋ฐฑ์ค] 1992 ์ฟผ๋ํธ๋ฆฌ - ์ฌ๊ทํจ์ (0) | 2024.08.19 |
[๋ฐฑ์ค] 11403 ๊ฒฝ๋ก ์ฐพ๊ธฐ - ๊ทธ๋ํ, DFS (0) | 2024.08.17 |
[๋ฐฑ์ค] 1927 ์ต์ ํ - ์ฐ์ ์์ ํ (0) | 2024.08.14 |