카드2(2164)

NJW·2021년 8월 29일
0

코테

목록 보기
96/170

들어가는 말

1부터 N번까지 카드가 들어있는데, 첫 번째 카드를 지우고 다음 카드를 뒤에 넣어준 뒤 또 첫 번재 카드를 지우고... 뭐 이런 규칙을 반복해서 마지막 남은 카드를 찾는 문제이다.

코드 설명

queue 헤더를 포함해서 풀었다. 먼저 1부터 n까지 숫자를 큐에 삽입한 후 삭제, 삽입, 삭제를 반복해서 크기가 1이 안 될 때까지 반복했다. 계속 무한 루프에 걸리길래 뭐가 문제인지 알아 봤더니 마지막에 pop를 한 번 더 써줘야 했다. 솔직히 이유는 모르겠지만, 흠... 뭔가 알 거 같기도 하면서? 모르겠네.

코드

#include<iostream>
#include<queue>

using namespace std;

int main() {
	int n;
	queue<int> q;
	int back;
	cin >> n;

	for (int i = 1; i <= n; i++) {
		q.push(i);
	}

	while (q.size() > 1) {
		q.pop();
		q.push(q.front());
		q.pop();
	}

	cout << q.front();

	return 0;
}
profile
https://jiwonna52.tistory.com/

0개의 댓글