본문 바로가기

알고리즘/백준풀이

[백준/C++] 2164번 카드2

문제링크

2164번 카드2

 

 

 

 

2161번 카드1

카드 1문제와 비슷하지만 마지막 출력값의 차이가 발생하는 문제

결론적으로 큐에서 가장 마지막에 남은 수를 출력해주면 되므로

카드1 해답과 동일한 로직에서 출력문 위치만 바꿔주는 것으로 해결 가능하다.

 

 

가장 앞의 값을 버림처리 하기 전 출력해주던 부분을

큐가 마지막으로 비었을 때 출력해주도록 바꿔줬다.

 

 

제출코드

#include <iostream>
#include <queue>
using namespace std;

// 앞에서 버리고 뒤로 추가한다 -> queue를 사용하는 문제

int N;

int main()
{
	queue<int> q;

	cin >> N;
	
	// 큐에 1부터 N까지의 수를 넣어줌
	for (int i = 1; i <= N; i++)
	{
		q.push(i);
	}

	while (!q.empty())
	{
		// 큐에서 가장 앞의 값을 빼내줌
		int front = q.front();
		q.pop();	// 버림처리
		
		// 수를 버렸을 때 큐가 비어있는지(다음 수가 남아있는지)체크
		if (q.empty())
		{
			cout << front << " ";
			break;
		}
		else
		{
			// 다음 수를 빼서 가장 마지막으로 넣어줌
			int next = q.front();
			q.pop();
			q.push(next);
		}
	}

	return 0;
}

'알고리즘 > 백준풀이' 카테고리의 다른 글

[백준/C++] 2776번 암기왕  (1) 2024.10.26
[백준/C++] 1966번 프린터 큐  (1) 2024.10.26
[백준/C++] 2161번 카드1  (0) 2024.10.26
[백준/C++] 2606번 바이러스  (0) 2024.10.26
[백준/C++] 1260번 DFS와 BFS  (0) 2024.10.26