Skip to content

Commit 8affc2c

Browse files
committed
[Silver IV] Title: 큐 2, Time: 1144 ms, Memory: 302876 KB -BaekjoonHub
1 parent 483e64f commit 8affc2c

2 files changed

Lines changed: 85 additions & 0 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# [Silver IV] 큐 2 - 18258
2+
3+
[문제 링크](https://www.acmicpc.net/problem/18258)
4+
5+
### 성능 요약
6+
7+
메모리: 302876 KB, 시간: 1144 ms
8+
9+
### 분류
10+
11+
자료 구조, 큐
12+
13+
### 제출 일자
14+
15+
2026년 1월 10일 22:08:25
16+
17+
### 문제 설명
18+
19+
<p>정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.</p>
20+
21+
<p>명령은 총 여섯 가지이다.</p>
22+
23+
<ul>
24+
<li>push X: 정수 X를 큐에 넣는 연산이다.</li>
25+
<li>pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.</li>
26+
<li>size: 큐에 들어있는 정수의 개수를 출력한다.</li>
27+
<li>empty: 큐가 비어있으면 1, 아니면 0을 출력한다.</li>
28+
<li>front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.</li>
29+
<li>back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.</li>
30+
</ul>
31+
32+
### 입력
33+
34+
<p>첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.</p>
35+
36+
### 출력
37+
38+
<p>출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.</p>
39+
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
let input = require('fs').readFileSync('./dev/stdin').toString().trim().split('\n');
2+
let N = Number(input[0]);
3+
let row = '';
4+
let arr = [];
5+
let head = 0;
6+
let tail = 0;
7+
let answerArr = [];
8+
let size = 0;
9+
10+
for (let i = 1; i <= N; i++) {
11+
row = input[i];
12+
size = tail - head;
13+
if (row.slice(0, 4) == 'push') {
14+
arr[tail] = Number(row.slice(5));
15+
tail++;
16+
} else if (row == 'front') {
17+
if (tail == head) {
18+
answerArr.push(-1);
19+
} else {
20+
answerArr.push(arr[head]);
21+
}
22+
} else if (row == 'back') {
23+
if (tail == head) {
24+
answerArr.push(-1);
25+
} else {
26+
answerArr.push(arr[tail - 1]);
27+
}
28+
} else if (row == 'pop') {
29+
if (tail == head) {
30+
answerArr.push(-1);
31+
} else {
32+
answerArr.push(arr[head]);
33+
head++;
34+
}
35+
} else if (row == 'size') {
36+
answerArr.push(size);
37+
} else {
38+
if (size == 0) {
39+
answerArr.push(1);
40+
} else {
41+
answerArr.push(0);
42+
}
43+
}
44+
}
45+
46+
console.log(answerArr.join('\n'));

0 commit comments

Comments
 (0)