본문 바로가기
백준/구현

백준 18258 c++ "큐 2" -PlusUltraCode-

by PlusUltraCode 2025. 9. 17.

https://www.acmicpc.net/problem/18258

[필자 사고]

큐 자료구조 내장함수를 이용하면 문제에서 요구하는 대로 쉽게 구현할 수 있다. 

 

아래는 자세한 코드 해설이다.

[코드 해설]

main 함수

  • 프로그램의 시작점.
  • 빠른 입출력을 위해 ios::sync_with_stdio(false), cin.tie(0), cout.tie(0) 설정.
  • 입력으로 명령 개수 N을 받음.
  • queue<int> myQueue를 생성하여 정수 큐를 준비.

명령어 처리 (while (N--))

  • 입력받은 N번만큼 반복하여 명령어를 처리.
  • 문자열 str에 명령어를 입력받음.
  • 명령어 종류에 따라 다음과 같이 실행됨:

1. "push"

  • 정수 num을 입력받아 myQueue.push(num)으로 큐의 뒤에 추가.

2. "pop"

  • 큐가 비어 있으면 -1 출력.
  • 비어 있지 않으면 front() 값을 출력하고, pop()으로 제거.

3. "size"

  • 현재 큐의 원소 개수를 size()로 출력.

4. "empty"

  • 큐가 비어 있으면 1, 아니면 0을 출력.

5. "front"

  • 큐가 비어 있으면 -1, 아니면 front() 값을 출력.

6. "back"

  • 큐가 비어 있으면 -1, 아니면 back() 값을 출력.

[소스 코드]

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

int N;

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> N;
	queue<int> myQueue;
	while (N--) {
		string str;
		cin >> str;
		if (str == "push") {
			int num;
			cin >> num;
			myQueue.push(num);
		}
		else if (str == "pop") {
			if (myQueue.empty()) {
				cout << -1 << "\n";
			}
			else {
				int nowNum = myQueue.front();
				myQueue.pop();
				cout << nowNum << "\n";
			}
		}
		else if (str == "size") {
			cout << myQueue.size() << "\n";
		}
		else if (str == "empty") {
			if (myQueue.empty()) {
				cout << 1 << "\n";
			}
			else {
				cout << 0<< "\n";
			}
		}
		else if (str == "front") {
			if (myQueue.empty()) {
				cout << -1 << "\n";
			}
			else {
				cout << myQueue.front() << "\n";
			}
		}
		else if (str == "back") {
			if (myQueue.empty()) {
				cout << -1 << "\n";
			}
			else {
				cout << myQueue.back() << "\n";
			}
		}
		
	}
}