[백준] 18258번: 큐2

응갱·2022년 8월 21일
0

백준

목록 보기
15/56
post-thumbnail

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

📎문제

정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 여섯 가지이다.

  • push X: 정수 X를 큐에 넣는 연산이다.
  • pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 큐에 들어있는 정수의 개수를 출력한다.
  • empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
  • front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

📎입력

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.

📎출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

📎코드와 해석

https://st-lab.tistory.com/186

🥔후기

😭하다가 포기한 문제 ,, ,
코드를 짜다가 다른 코드를 계속 찾아봤다. 시간 제한 조건이 신경쓰이는데 Scanner를 쓰고서는 시간 조건을 맞추지 못 할 것 같았다.

https://incomeplus.tistory.com/368

실제로 위 글을 보면 시간 제한 때문에 StringTokenizer, BufferedReader 객체를 쓰지 않으면 시간 제한에 걸린다고 한다.
해당 객체에 아예 '모른다' 상태에 가까워서 문제를 푸는 것 보단 해당 객체들을 찾아 보는 것에 집중했다. 실제로 이 객체들은 매우 많이 쓰이는데 내가 몰랐던 것이기 때문에 , ,, 이렇게 된 김에 끝까지 찾아 보자고 생각했다.

또, back을 구현하는 것에 있어서 어려웠다.
사실 이것은 문제 이름이 큐라 큐만 사용할 생각을 해서 그랬다.
deque를 이용하면 쉽게 풀 수 있다는 것이 , , ,
어렵다.....어렵다.......🥔

profile
🥔 한 덩이

0개의 댓글