728x90
출처
https://www.acmicpc.net/problem/11866
내 풀이
#include<iostream>
#include<queue>
using namespace std;
queue<int>q;
int N = 0, K = 0;
int main()
{
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 cnt_num = q.front();
q.pop();
q.push(cnt_num);
}
if (q.size() == 1)
{
cout << q.front();
q.pop();
}
else
{
int cnt_num = q.front();
cout << cnt_num << ", ";
q.pop();
}
}
cout << ">";
}
해설
먼저 1~N만큼의 수를 큐에 대입해주고 난 뒤 while문 안에서 for문으로 K-1번만큼 pop, push를 반복한 뒤 K번째 값을 출력하고 빼주는 걸 큐가 empty할때까지 반복하였다.
느낀점
Good
'백준 코딩테스트 > 실버' 카테고리의 다른 글
1057) 토너먼트 (C++) (0) | 2022.06.05 |
---|---|
11931) 수 정렬하기 4 (C++) (0) | 2022.06.03 |
2960) 에라토스테네스의 체 (C++) (0) | 2022.06.01 |
11659) 구간 합 구하기 4 (C++) (0) | 2022.05.25 |
3036) 링 (C++) (0) | 2022.05.24 |