문제
리뷰
K번째 수를 세는 문제다. 큐를 이용해 풀 수 있다.
일단 꺼낸다 pop한다. 몇 번째인지 cnt를 확인한다. K번째면 답에 넣고, 아니면 다시 push 한다.
맞은 코드
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int N, K, n;
queue<int> q;
vector<int> v;
int main(void){
scanf("%d %d", &N, &K);
for(int i=1; i<=N; i++){
q.push(i);
}
int cnt = 0;
while(!q.empty()){
int num = q.front();
q.pop(); // 일단 꺼낸다.
cnt++;
if(cnt == K){ // K번째 일 때 벡터에 넣는다
v.push_back(num);
cnt = 0;
}else{
q.push(num); // 다시 넣는다.
}
}
// 출력
cout << '<';
for(int i = 0; i < v.size()-1; i++ ){
printf("%d, ", v[i]);
}
printf("%d>", v[v.size()-1]);
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
체스판 다시 칠하기 백준 1018번 (0) | 2020.10.02 |
---|---|
골드바흐 파티션 백준 17103번 (0) | 2020.10.02 |
카드2 백준 2164번 (0) | 2020.09.30 |
ACM 호텔 백준 10250번 c++ (0) | 2020.09.28 |
이항계수1 백준 11050번 c++ (0) | 2020.09.28 |