๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1158
๐ ๋ฌธ์ ์์ฝ
- 1๋ถํฐ N๊น์ง ๋ฒํธ๊ฐ ๋ถ์ ์ฌ๋๋ค์ด ์ํ์ผ๋ก ์์ ์๋ค.
- ๋งค๋ฒ K๋ฒ์งธ ์ฌ๋์ ์ ๊ฑฐํ๋ค.
- ์ ๊ฑฐ๋๋ ์์๋ฅผ < > ํ์์ผ๋ก ์ถ๋ ฅํ๋ค.
์ ํ์ ์ธ ์๋ฎฌ๋ ์ด์
๋ฌธ์ ์ฒ๋ผ ๋ณด์ด์ง๋ง,
์ด ๋ฌธ์ ์ ๋ณธ์ง์ “์ํ ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ํํํ ๊ฒ์ธ๊ฐ”์ ์๋ค.
๐ก ์ ๊ทผ ์์ด๋์ด
์ฒ์ ๋ ์ฌ๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๋ค.
- ๋ฐฐ์ด + ์ธ๋ฑ์ค ๊ณ์ฐ
- ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ํ์ ์ ํ์
ํ์ง๋ง ์ด ๋ฌธ์ ์์ ๊ฐ์ฅ ์ง๊ด์ ์ด๊ณ ์ค์ ์๋ ๋ฐฉ๋ฒ์ ํ(queue) ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
ํต์ฌ ๊ด์ฐฐ
“์ํ(Cycle)์ ์ ์ ์ ์ถ(FIFO)์ ์ฌ์ ๋ ฅ์ด๋ค.”
- ๋งจ ์ ์ฌ๋์ ๊บผ๋ด์ ๋ค์ ๋งจ ๋ค๋ก ๋ณด๋ด๋ฉด
- ์ฌ๋๋ค์ ์์ฐ์ค๋ฝ๊ฒ ์ํ์ผ๋ก ํ์ ํ๋ค
๊ตณ์ด % ์ฐ์ฐ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ณ์ฐํ๊ฑฐ๋,
๋ณต์กํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ํ์๊ฐ ์๋ค.
๊ตฌํ ์ฝ๋ (C++)
#include <bits/stdc++.h>
//ctr + alt +n
using namespace std;
int main(){
int n, k;
cin>>n>>k;
queue<int> q;
vector<int> v;
for(int i=0;i<n;i++){
q.push(i+1);
}
int tmp;
while(!q.empty()){
for(int i=0;i<k-1;i++){
tmp=q.front();
q.pop();
q.push(tmp);
}
tmp=q.front();
v.push_back(tmp);
q.pop();
}
cout<<"<";
for(int i=0;i<v.size()-1;i++){
cout<<v[i]<<", ";
}
cout<<v.back()<<'>';
return 0;
}
์ด ํ์ด๊ฐ ๊น๋ํ ์ด์
1. ์ํ์ FIFO์ ์ฌ์ ๋ ฅ์ด๋ค
- pop() → push()๋
์ํ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ๋ฅผ ํ ์นธ ๋๋ฆฌ๋ ๊ฒ๊ณผ ๊ฐ๋ค - ํ ํ๋๋ง์ผ๋ก ์ํ ๊ตฌ์กฐ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํํ
๐ ์ํ ๋ฆฌ์คํธ, % ์ฐ์ฐ ์์ด๋ ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
2. ๋ณด๋ฅ์ ํ์ ์ ๋ถ๋ฆฌ
์ด ๋ฌธ์ ๋ฅผ ์ด๋ ๊ฒ ์๊ฐํ๋ฉด ํจ์ฌ ๋จ์ํด์ง๋ค.
- K-1๋ช → ์์ง ์ ๊ฑฐ ๋์ ์๋ → ๋ค๋ก ๋ณด๋ (๋ณด๋ฅ)
- K๋ฒ์งธ → ์ ๊ฑฐ ๋์ → ์๊ตฌ ์ดํ (ํ์ )
๐ “์ญ์ ”๋ณด๋ค
๐ “์ญ์ ๋ ์ฌ๋์ ์ฐพ์ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ณผ์ ”์ด ํต์ฌ
3. ์ธ๋ฑ์ค ๊ด๋ฆฌ ๋์ ์ํ ๊ด๋ฆฌ
๋ฐฐ์ด๋ก ํ๋ฉด ํญ์ ์ด๋ฐ ๊ณ ๋ฏผ์ ํ๊ฒ ๋๋ค.
- ์ง๊ธ ์ธ๋ฑ์ค๊ฐ ๋ช์ด์ง?
- ํ๋ ์ญ์ ํ์ผ๋ ๋ค์ ๊ฒ๋ค ๋ค ๋น๊ฒจ์ผ ํ๋?
- off-by-one ์๋ฌ ์ ๋ฌ๋?
ํ๋ฅผ ์ฐ๋ฉด ์ด๋ฐ ๊ณ ๋ฏผ์ด ์ฌ๋ผ์ง๋ค.
“๋ด๊ฐ ์ฌ๋์ ์ฐพ์๋ค๋๋ ๊ฒ ์๋๋ผ,
์ฌ๋๋ค์ด ๋ด ์(front)์ ์ง๋๊ฐ๊ฒ ๋ง๋ ๋ค.”
- ๋๋ ์ค์ง front()๋ง ๋ณธ๋ค
- ์ธ๋ฑ์ค ๊ณ์ฐ ์์ฒด๊ฐ ํ์ ์์
๐ ์ค๊ฐ ์ญ์ ๊ฐ ๋ฐ๋ณต๋๋ ๋ฌธ์ ์์ ํ๋ ์ค์ ๋ฐฉ์ง์ฉ ๋๊ตฌ
์์ธํธ์ค ๋ฌธ์ ๋ ‘์ญ์ ’๊ฐ ํต์ฌ์ด ์๋๋ผ,
์ญ์ ๋ ๋์์ ์ฐพ์ ๋๊น์ง ๋๋จธ์ง๋ฅผ ๋ค๋ก ๋๋ฆฌ๋
‘ํ์ (Rotation)’ ๊ณผ์ ์ด ํต์ฌ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ํ์ ์ ๊ฐ์ฅ ์์ฐ์ค๋ฝ๊ฒ ๊ตฌํํ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ํ์ด๋ค.
๐ ๊ฐ์ธ ๋ฌธ์ ํ์ด ๋ ํฌ
๐ GitHub
https://github.com/zzmnxn/algorithm-study
'Algorithms > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ฐฑ์ค] ๋ ์์ ํฉ 3273 (Silver3) โ ํด์ ๊ฐ๋ ์ผ๋ก ์๊ฐ๋ณต์ก๋ ์ค์ด๊ธฐ (0) | 2026.01.21 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ๋ฅ ๊ฐ๋ฐ 42586 (Level 2) - C++ (0) | 2026.01.18 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๊ดํธ ํ์ ํ๊ธฐ 76502 (Level 2) - C++ (0) | 2026.01.18 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ 42889 (Level 1) - C++ (1) | 2026.01.18 |
| 14425 ๋ฌธ์์ด ์งํฉ[c++] unordered_set (0) | 2024.02.12 |