BOJ 문제풀이

백준 2164번 c++ 풀이

koreasunoo 2021. 8. 6. 00:51

안녕하세요 오늘은 큐 개념을 이용하면 아주 간단하게 풀리는 문제를 풀어보도록 하겠습니다.

 

전략:

1. 큐를 선언해주고 N번 반복하는 for문에서 q.push()를 이용하여 카드를 배열한다.

2. q.size()가 1이 아니면 while문을 반복하게 while문을 작성한다.

3. q.size()가 1이될때까지 q.pop(), q.pop(q.front()), q.pop() 순서대로 작성하여 1이되면 그 값을 출력한다.

 

코드:

#include <bits/stdc++.h>
using namespace std;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int N;
	cin>>N;
	queue<int> q;
	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();
}

'BOJ 문제풀이' 카테고리의 다른 글

백준 10828번 c++ 풀이  (0) 2021.08.06
백준 10866번 c++ 풀이  (0) 2021.08.06
백준 10845번 c++ 풀이  (0) 2021.08.06
백준 11050번 c++ 풀이  (0) 2021.08.05
백준 18870번 c++ 풀이  (0) 2021.08.05