728x90
반응형
출처:
https://www.acmicpc.net/problem/10845

예제 입력 1
15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front
예제 출력 1
1
2
2
0
1
2
-1
0
1
-1
0
3
리뷰
큐 기본 형 구현이기 때문에 필수로 짚고 넘어가야하는 코드
해당 코드가 내 지식이 되야지 다른 파생 문제를 풀 수 있음
특징:
- 각 기능별 함수 분할
- 큐를 동적배열로 할당 -> 동적배열을 함수의 매개변수로 넘길 시 포인터를 사용해야함
#include <stdio.h>
#include <stdlib.h>
// 함수 push , pop, size, emty, fornt, back
void push(int* head, int* queue, int value);
void pop(int head, int* rear, int* queue);
void size(int head, int rear);
void empty(int head, int rear);
void front(int head, int rear, int* queue);
void back(int head, int rear, int* queue );
int main() {
// 주어지는 명령의 수 N
int N = 0;
scanf("%d", &N);
// 큐 생성 (배열로 구현)
int* queue = (int *)malloc(N * sizeof(int));
int rear = 0;
int head = 0;
// 입력받기
char input[7];
int input_v = 0;
for(int i = 0 ; i < N ; i++){
scanf("%s", input);
if(input[1] == 'u'){
scanf("%d", &input_v);
push(&head, queue, input_v);
} else if(input[1] == 'o'){
pop(head, &rear, queue);
} else if(input[1] == 'i'){
size(head, rear);
}else if(input[1] == 'm'){
empty(head, rear);
} else if(input[1] == 'r'){
front(head, rear, queue);
} else if(input[1] == 'a'){
back(head, rear, queue);
}
}
free(queue);
return 0;
}
void push(int* head, int* queue, int value){
queue[*head] = value;
(*head) ++;
// printf("%d\n", value);
}
void pop(int head, int* rear, int* queue){
if(head - *rear == 0){
printf("-1\n");
} else{
int pop_result = queue[*rear];
printf("%d\n", pop_result);
queue[*rear] = '\0';
(*rear) ++;
}
}
void size(int head, int rear){
printf("%d\n", head - rear);
}
void empty(int head, int rear){
if(head - rear == 0){
printf("1\n");
}else{
printf("0\n");
}
}
void front(int head, int rear, int* queue){
if(head - rear ==0){
printf("-1\n");
} else{
printf("%d\n", queue[rear]);
}
}
void back(int head, int rear, int* queue ){
if(head - rear ==0){
printf("-1\n");
} else{
printf("%d\n", queue[head-1]);
}
}
728x90
반응형
'Computer Science > 알고리즘 문제' 카테고리의 다른 글
C - [백준 2178] 미로탐색 (feat. BFS & 최단거리 탐색) (0) | 2024.12.26 |
---|---|
C - [백준 11724 재구현] 연결 요소의 개수 (feat. 리스트) (0) | 2024.12.24 |
C - [백준 11724] 연결 요소의 개수 (feat. 배열) (0) | 2024.12.23 |
C - [백준 1260] DFS와 BFS (0) | 2024.12.23 |
C - [백준 1021] 회전하는 큐 (0) | 2024.12.19 |