[ ๋ฌธ์ ๋งํฌ ]
https://www.acmicpc.net/problem/11866
๐ฉ ์กฐ๊ฑด
- 1๋ฒ๋ถํฐ N๋ฒ๊น์ง N๋ช ์ ์ฌ๋์ด ์์ ์ด๋ฃจ๋ฉด์ ์์์๊ณ , ์์ ์ ์ K(≤ N)๊ฐ ์ฃผ์ด์ง
- ์์๋๋ก K๋ฒ์งธ ์ฌ๋์ ์ ๊ฑฐ
- ํ ์ฌ๋์ด ์ ๊ฑฐ๋๋ฉด ๋จ์ ์ฌ๋๋ค๋ก ์ด๋ฃจ์ด์ง ์์ ๋ฐ๋ผ ์ด ๊ณผ์ ์ ๊ณ์ํด ๋๊ฐ, ๋ชจ๋ ์ฌ๋์ด ์ ๊ฑฐ๋ ๋๊น์ง ๋ฐ๋ณต
- ์ ๊ฑฐ๋๋ ์์๋ฅผ (N, K)-์์ธํธ์ค ์์ด์ด๋ผ๊ณ ํจ, N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ฉด (N, K)-์์ธํธ์ค ์์ด์ ๊ตฌํด๋ผ
๐ฉ ์ ๊ทผ
1 -> ํ ๋๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํํ์
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํํ๊ธฐ๋ก ํจ
๐ฉ ์ํ์ฐฉ์ค
iterator์ ์ฌ์ฉํ๋ฉด ํญ์ segfault๊ฐ ๋๋ค..ใ
- iterator++, iterator-- ๋ฑ์ ๊ฐ๋ฅํ์ง๋ง iterator+2 ๋ฑ ์ซ์์ ์ฐ์ฐ์ ๋ถ๊ฐ๋ฅํ๋ค
- list.push_back(n) : iterator๊ฐ ๋ค์ ์์๊ฐ ๋ค์ด๊ฐ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํจ๊ป ์์ง์ธ๋ค
- list.begin() : ๋งจ ์์ ์์๋ฅผ ๊ฐ๋ฆฌํจ๋ค
- list.end() : ๋งจ ๋ง์ง๋ง์ ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํจ๋ค
๐ป ์ฝ๋ (C++)
#include <iostream>
#include <list>
using namespace std;
list<int> l;
list<int>::iterator iter;
int cnt;
int main(){
int N, K;
cin>>N>>K;
for(int i=1;i<=N;i++){
l.push_back(i);
}
iter = l.begin();
cout<<"<";
while(!l.empty()){
for(int i=0;i<K;i++){
if(iter==l.end()){
iter = l.begin();
}
iter++;
}
if(cnt!=N-1){
cout << *(--iter) << ", ";
}else{
cout << *(--iter) << ">";
break;
}
iter = l.erase(iter);
cnt++;
}
}
+ STL queue๋ฅผ ์ด์ฉํ ๊ตฌํ
์ํ ํ๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํด์ผํ ์ง ๊ฐ์ด ์ ์์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๋๋ฐ, ์๋์ ๊ฐ์ด popํ ์์๋ฅผ ๋งจ ๋ค๋ก ๋ฃ์ผ๋ฉด ์ํ ํ๋ฅผ ๊ตฌํํ ์ ์๋ค.
- stack, queue์๋ iterator๊ฐ ์๋ค
- vector, deque, set, map, list ๋ฑ์๋ง iterator๊ฐ ์๋ค
- STL queue๋ฅผ ์ฌ์ฉํ ์ ์๊ณ queue๋ฅผ ์ง์ ๊ตฌํํด์ผ ํ๋ค๋ฉด ๋ฐฐ์ด ๋๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌํํ ์ ์๋ค
#include <iostream>
#include <queue>
using namespace std;
queue<int> q;
int cnt;
int main() {
int N, K;
cin >> N >> K;
for (int i = 1; i <= N; i++) {
q.push(i);
}
cout << "<";
while (!q.empty()) {
for (int i = 0; i < K-1; i++) {
int next = q.front();
q.pop();
q.push(next);
}
int next = q.front();
if (cnt != N - 1)
cout << next << ", ";
else
cout << next << ">";
cnt++;
q.pop();
}
}
'๐ป Algorithms > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1003 ํผ๋ณด๋์น ํจ์ - ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (0) | 2024.08.31 |
---|---|
[๋ฐฑ์ค] 1991 ํธ๋ฆฌ ์ํ - ํธ๋ฆฌ, ์ฌ๊ท (0) | 2024.08.27 |
[๋ฐฑ์ค] 1181 ๋จ์ด ์ ๋ ฌ - ์ ๋ ฌ (0) | 2024.08.25 |
[๋ฐฑ์ค] 10814 ๋์ด์ ์ ๋ ฌ - ์ ๋ ฌ (0) | 2024.08.24 |
[๋ฐฑ์ค] 5397 ํค๋ก๊ฑฐ - ์ฐ๊ฒฐ ๋ฆฌ์คํธ (0) | 2024.08.24 |