Search
Duplicate

주차
16
문제번호
10845
언어
C++
티어
실버
유형
자료구조
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

Memo

로직 설명

front = 배열의 맨 앞 부분, end = 배열의 맨 뒷 부분
front와 end를 적절히 이동시켜 STL Queue처럼 동작하도록 했습니다.
end는 queue의 마지막 원소 다음 부분을 가리키도록 합니다. (빈 원소를 표현하기 위함)

자료 구조

배열을 통한 큐 구현

코드 설명

bool is_empty(int a, int b) { return a == b; }
C++
복사
front와 back이 같으면 1을 리턴, 다르면 0을 리턴 합니다.
if (op == "push") { std::cin >> val; queue[back++] = val; }
C++
복사
PUSH 작업을 위해 넣을 값을 우선 받습니다.
큐 뒷 부분에 새로운 값이 들어옵니다. back은 하나 증가시켜 다음 값을 받을 준비를 합니다.

Code

제출 날짜

@4/16/2021

메모리

2060 KB

시간

0 ms
#include <iostream> #define endl "\n" int N; int queue[10002]; std::string op; void io_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { io_faster(); std::cin >> N; } bool is_empty(int a, int b) { return a == b; } void solve() { int front = 0, back = 0, val; while (N--) { std::cin >> op; if (op == "push") { std::cin >> val; queue[back++] = val; } else if (op == "front") { if (is_empty(front, back)) std::cout << -1 << endl; else std::cout << queue[front] << endl; } else if (op == "back") { if (is_empty(front, back)) std::cout << -1 << endl; else std::cout << queue[back - 1] << endl; } else if (op == "size") std::cout << back - front << endl; else if (op == "pop") { if (is_empty(front, back)) std::cout << -1 << endl; else std::cout << queue[front++] << endl; } else if (op == "empty") std::cout << is_empty(front, back) << endl; } } int main() { input(); solve(); return (0); }
C++
복사