BOJ 2161. ์นด๋1
๐โโ๏ธ[Silver V] ์นด๋1 - 2161
์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 2020 KB, ์๊ฐ: 0 ms
๋ถ๋ฅ
์๋ฃ ๊ตฌ์กฐ, ๊ตฌํ, ํ
์ ์ถ ์ผ์
2023๋ 12์ 23์ผ 17:49:55
๋ฌธ์ ์ค๋ช
N์ฅ์ ์นด๋๊ฐ ์๋ค. ๊ฐ๊ฐ์ ์นด๋๋ ์ฐจ๋ก๋ก 1๋ถํฐ N๊น์ง์ ๋ฒํธ๊ฐ ๋ถ์ด ์์ผ๋ฉฐ, 1๋ฒ ์นด๋๊ฐ ์ ์ผ ์์, N๋ฒ ์นด๋๊ฐ ์ ์ผ ์๋์ธ ์ํ๋ก ์์๋๋ก ์นด๋๊ฐ ๋์ฌ ์๋ค.
์ด์ ๋ค์๊ณผ ๊ฐ์ ๋์์ ์นด๋๊ฐ ํ ์ฅ ๋จ์ ๋๊น์ง ๋ฐ๋ณตํ๊ฒ ๋๋ค. ์ฐ์ , ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ๋ฐ๋ฅ์ ๋ฒ๋ฆฐ๋ค. ๊ทธ ๋ค์, ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ์ ์ผ ์๋์ ์๋ ์นด๋ ๋ฐ์ผ๋ก ์ฎ๊ธด๋ค.
์๋ฅผ ๋ค์ด N=4์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ณด์. ์นด๋๋ ์ ์ผ ์์์๋ถํฐ 1234 ์ ์์๋ก ๋์ฌ์๋ค. 1์ ๋ฒ๋ฆฌ๋ฉด 234๊ฐ ๋จ๋๋ค. ์ฌ๊ธฐ์ 2๋ฅผ ์ ์ผ ์๋๋ก ์ฎ๊ธฐ๋ฉด 342๊ฐ ๋๋ค. 3์ ๋ฒ๋ฆฌ๋ฉด 42๊ฐ ๋๊ณ , 4๋ฅผ ๋ฐ์ผ๋ก ์ฎ๊ธฐ๋ฉด 24๊ฐ ๋๋ค. ๋ง์ง๋ง์ผ๋ก 2๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋๋ฉด, ๋ฒ๋ฆฐ ์นด๋๋ค์ ์์๋๋ก 1 3 2๊ฐ ๋๊ณ , ๋จ๋ ์นด๋๋ 4๊ฐ ๋๋ค.
N์ด ์ฃผ์ด์ก์ ๋, ๋ฒ๋ฆฐ ์นด๋๋ค์ ์์๋๋ก ์ถ๋ ฅํ๊ณ , ๋ง์ง๋ง์ ๋จ๊ฒ ๋๋ ์นด๋๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ N(1 โค N โค 1,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฒ๋ฆฌ๋ ์นด๋๋ค์ ์์๋๋ก ์ถ๋ ฅํ๋ค. ์ ์ผ ๋ง์ง๋ง์๋ ๋จ๊ฒ ๋๋ ์นด๋์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค.
๐ํ์ด
๊ธฐ๋ณธ์ ์ด queue์์ฉ ๋ฌธ์ ์๋ค.
int n;
queue<int> q;
void solve()
{
cin >> n;
for (int i = 1; i <= n; ++i)
q.push(i);
while (q.size() != 1)
{
// ๋งจ ์์ ์นด๋ ๋ฒ๋ฆฌ๊ธฐ์ ์ถ๋ ฅ
cout << q.front() << " ";
q.pop();
// ๊ทธ ๋ค์์ฅ์ ํ์์ ๋นผ๊ณ ๋ค์ ๋งจ๋ค๋ก ๋ฃ๊ธฐ
int temp = q.front();
q.pop();
q.push(temp);
}
// ํ์ฅ ๋จ์์ผ๋ฏ๋ก ์ถ๋ ฅ
cout << q.front();
}
์ง๊ธ ์๊ฐํด๋ณด๋ q.empty() == false
์ผ ๋๊น์ง ํด๋ ๋๊ฒ ๋ค.
์ ๊ทธ๋ฌ์ง.
๐์ ์ฒด ์ฝ๋
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int n;
queue<int> q;
void solve()
{
cin >> n;
for (int i = 1; i <= n; ++i)
q.push(i);
while (q.size() != 1)
{
cout << q.front() << " ";
q.pop();
int temp = q.front();
q.pop();
q.push(temp);
}
cout << q.front();
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen("input.txt", "rt", stdin);
solve();
return 0;
}