상세 컨텐츠

본문 제목

[자료구조] 백준 10845번 큐 문제풀이

자료구조

by ~지우~ 2021. 11. 19. 14:27

본문

728x90

오늘은 백준 10845번 큐 문제풀이를 해보겠습니다.

 

 

명령어 하나씩 어떻게 구현할지 설명해보겠습니다.

일단, 인덱스를 -1로 초기화한다. 

-명령어가 push라면:

 정수 하나를 입력받아서 배열의 (인덱스+1) 위치에 넣는다.

 그 후, 배열의 인덱스를 하나 증가시킨다.

 

-명령어가 pop이라면: 

 만약 현재 인덱스가 0보다 작다면(증가되지 않고 처음 초기화한 상태 그대로라면) -1을 출력한다.

 아니라면 배열의 인덱스 0에 있는 값을 출력한다.

 그 후, 뒤에 저장된 값들을 한칸씩 앞으로 당기고 인덱스 값을 하나 줄여준다.

 

-명령어가 size라면:

 현재 인덱스값에 1을 더한 값을 출력한다. 

 

-명령어가 empty라면:

 현재 인덱스가 0보다 작다면 배열이 비어있다는 의미이기 때문에 1을 출력한다.

 아니라면 0을 출력한다. 

 

-명령어가 front라면:

 만약 현재 인덱스가 0보다 작다면(증가되지 않고 처음 초기화한 상태 그대로라면) -1을 출력한다.

 아니라면 배열의 인덱스 0에 있는 값을 출력한다.

 

-명령어가 top이라면:

 만약 현재 인덱스가 0보다 작다면(증가되지 않고 처음 초기화한 상태 그대로라면) -1을 출력한다.

 아니라면 배열에서 현재 인덱스 위치에 있는 값을 출력한다.

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {
	int n;
	char command[10];
	int num = 0;
	scanf("%d", &n);
	int arr[10000];
	int idx = -1;

	for (int i = 0; i < n; i++) {
		memset(command, 0, sizeof(command));
		scanf("%s", command);

		if (strcmp(command, "push") == 0) {
			scanf("%d", &num); 
			arr[idx + 1] = num;
			idx++;
		}

		else if (strcmp(command, "front") == 0) {
			if (idx < 0)
				printf("-1\n");
			else
				printf("%d\n", arr[0]);
		}
        
		else if (strcmp(command, "back") == 0) {
			if (idx < 0)
				printf("-1\n");
			else
				printf("%d\n", arr[idx]);
		}
        
		else if (strcmp(command, "size") == 0) {
			printf("%d\n", idx + 1);
		}

		else if (strcmp(command, "empty") == 0) {
			if (idx < 0)
				printf("1\n");
			else
				printf("0\n");
		}

		else if (strcmp(command, "pop") == 0) {
			if (idx < 0)
				printf("-1\n");
			else {
				printf("%d\n", arr[0]);
				for (int i = 0; i < idx; i++) {
					arr[i] = arr[i + 1];
				}
				idx--;
			}
		}
	}
	return 0;
}

 

 

728x90

관련글 더보기

댓글 영역