728x90
SMALL
백준 문제 풀이: 10845 [큐]
문제 링크: https://www.acmicpc.net/problem/10845
문제 설명:
정수를 저장하는 큐를 구현하는 문제입니다. 큐에 대해 다음 명령을 처리합니다:
push X
: 정수 X를 큐에 넣습니다.pop
: 큐에서 가장 앞에 있는 정수를 빼고 출력합니다. 큐가 비어있으면 -1을 출력합니다.size
: 큐에 들어있는 정수의 개수를 출력합니다.empty
: 큐가 비어있으면 1, 아니면 0을 출력합니다.front
: 큐의 가장 앞에 있는 정수를 출력합니다. 큐가 비어있으면 -1을 출력합니다.back
: 큐의 가장 뒤에 있는 정수를 출력합니다. 큐가 비어있으면 -1을 출력합니다.
문제 해결 코드
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue q;
int n;
cin >> n;
string s;
int x;
for (int i = 0; i < n; i++) {
cin >> s;
if (s == "push") {
cin >> x;
q.push(x);
} else if (s == "front") {
if (!q.empty()) {
cout << q.front() << '\n';
} else {
cout << -1 << '\n';
}
} else if (s == "back") {
if (!q.empty()) {
cout << q.back() << '\n';
} else {
cout << -1 << '\n';
}
} else if (s == "size") {
cout << q.size() << '\n';
} else if (s == "empty") {
cout << (q.empty() ? 1 : 0) << '\n';
} else if (s == "pop") {
if (!q.empty()) {
cout << q.front() << '\n';
q.pop();
} else {
cout << -1 << '\n';
}
}
}
return 0;
}
코드 설명
- 핵심 알고리즘: C++ STL의
queue
를 사용하여 큐의 기본 동작을 구현합니다. - 구현 세부사항:
- 큐에 원소를 추가하거나 제거하는
push
와pop
동작을 구현합니다. - 큐의 크기와 비어있는지 여부를
size
와empty
명령으로 확인합니다. front
와back
명령으로 큐의 맨 앞과 맨 뒤 값을 확인합니다.- 조건에 따라 큐가 비어 있을 경우 -1을 출력합니다.
- 큐에 원소를 추가하거나 제거하는
- 시간 복잡도: 모든 명령이 O(1)의 시간 복잡도로 처리됩니다.
결과
큐의 기본 명령을 구현하고, 문제에서 주어진 동작에 맞게 처리합니다. C++의 queue
를 사용하여 효율적으로 해결했습니다. 다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 자료 구조' 카테고리의 다른 글
백준 6549번 [히스토그램에서 가장 큰 직사각형](C++)-yes6686- 티스토리 (0) | 2024.01.06 |
---|---|
백준 11866번 [요세푸스 문제 0](C++)-yes6686- 티스토리 (0) | 2024.01.05 |
백준 10828번 [스택](C++)-yes6686- 티스토리 (1) | 2024.01.05 |
백준 10816번 [숫자 카드 2](C++)-yes6686- 티스토리 (0) | 2024.01.03 |
백준 10773번 [제로](C++)-yes6686- 티스토리 (0) | 2024.01.03 |