728x90
문제 링크
풀이 아이디어
규칙성을 찾아 벡터를 이용해 푸는 방법과
큐를 이용해 직접 k-1번씩 앞에 숫자를 빼서 뒤에넣은 후 k번째 숫자를 출력하는 방법이 있다.
어느것으로 풀어도 상관없음.
코드
방법 1. 큐를 이용해 푸는 법
#include <bits/stdc++.h>
using namespace std;
queue<int> q;
int n,k,temp;
int main(void){
cin >> n >> k;
for(int i=1; i<=n;i++) q.push(i);
cout<<"<";
while(true){
for(int i=0; i < k - 1; i++) {
temp = q.front();
q.pop();
q.push(temp);
}
cout<<q.front();
q.pop();
if(!q.size()) break;
cout<<", ";
}
cout<<">";
}
방법 2. 벡터를 이용해 푸는 법
#include <iostream>
#include <vector>
using namespace std;
int n, m;
vector <int> v;
int main() {
cin >> n >> m;
for(int i = 0; i < n; i++) v.push_back(i + 1);
int pos = 0;
putchar('<');
while(!v.empty()) {
pos = (pos + m - 1) % v.size();
cout << v[pos];
v.erase(v.begin() + pos);
if(v.size() == 0) cout << ">" << "\n";
else cout << ", ";
}
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 12003 Diamond collector(silver) : 구간 2개를 구해야 하는 슬라이딩 윈도우 문제 (0) | 2021.01.29 |
---|---|
백준 2213 트리의 독립집합 - 어떤놈인지까지 찾아야 하는 트리dp c++ (0) | 2021.01.26 |
백준 2150 strongly connected component (0) | 2021.01.24 |
백준 1647 도시 분할 계획 : 전형적인 MST + 부모 동일 유무 파악시 주의할 점 (0) | 2021.01.19 |
백준 1516 게임 개발 - 위상정렬과 dp가 함께 쓰이는 문제(2) (0) | 2021.01.16 |