728x90
반응형
큐 2 문제는 자료구조 큐를 활용하여 해결할 수 있는 문제이다. 자료구조 큐에 대한 학습을 하였다면 어려움없이 무난하게 풀 수 있는 문제이다. 큐에 대한 내용은 다음 링크에 확인할 수 있다.
2021.07.07 - [알고리즘/이론] - [알고리즘/이론]큐
[알고리즘/이론]큐
원소를 삽입할 때 Enqueue, 원소를 제거할 때 Dequeue를 한다. 큐는 FIFO(first in, first out, 선입선출)의 특성을 같는다. 큐는 머리(head)와 꼬리(tail)을 갖는 데, 원소는 꼬리로 삽입되고 머리에서 제거된다
ark-hive.tistory.com
구현할 때 주의할 점은 getchar 함수를 사용할 때 다음과 같이 괄호를 써주어야 한다는 점이다. 연산자의 우선순위규칙 때문에 비교연산이 우선 수행된 후 대입연산이 실행되기 때문이다. 또한 getchar를 사용할 때 마지막에는 EOF가 입력된다는 것을 주의해야 한다.
character = getchar != '\n' -------- x
(character = getchar) != '/n' ------ o
작성한 코드는 다음과 같다.
#include<stdio.h>
//http://ark-hive.tistory.com/
int N;
char character;
int x;
int queue[2000020];
int head;
int tail;
void push(int x) {
queue[tail] = x;
tail += 1;
return;
}
void pop() {
if (head == tail) printf("-1\n");
else {
printf("%d\n", queue[head]);
head += 1;
}
return;
}
int main(void) {
scanf("%d%*c", &N);
for(int i=0;i<N;i++){
x = 0;
character = getchar();
if (character == 'p') {
character = getchar();
if (character == 'u') {
while (getchar() != ' ');
while (1) {
if ((character = getchar()) == '\n') break;
if (character == EOF) break;
x *= 10;
x += character - '0';
}
push(x);
}
else {
pop();
while ((character = getchar()) != '\n') {
if (character == EOF)break;
}
}
}
else if (character == 's') {
printf("%d\n", tail - head);
while ((character = getchar()) != '\n') {
if (character == EOF) break;
}
}
else if (character == 'e') {
if (head == tail)
printf("%d\n", 1);
else
printf("%d\n", 0);
while ((character = getchar()) != '\n') {
if (character == EOF) break;
}
}
else if (character == 'f') {
if (head == tail) printf("%d\n", -1);
else printf("%d\n", queue[head]);
while ((character = getchar()) != '\n') {
if (character == EOF) break;
}
}
else if (character == 'b') {
if (head == tail) printf("%d\n", -1);
else printf("%d\n", queue[tail - 1]);
while ((character = getchar()) != '\n') {
if (character == EOF) break;
}
}
}
return 0;
}
문제의 지문은 다음의 링크에서 확인할 수 있다.
728x90
반응형
'전공 > Problem Solving' 카테고리의 다른 글
[알고리즘/문제풀이/BOJ 11866번] 요세푸스 문제 0 (0) | 2021.07.08 |
---|---|
[알고리즘/문제풀이/BOJ 2164번] 카드 2 (0) | 2021.07.08 |
[알고리즘/문제풀이/BOJ 17298번] 오큰수 (0) | 2021.07.04 |
[알고리즘/문제풀이/BOJ] 프로그래밍 언어와 함수에 따른 입력 속도 차이 (0) | 2021.07.04 |
[알고리즘/문제풀이/BOJ 1874번] 스택 수열 (0) | 2021.07.04 |