혜랑's STORY

[BOJ_C] 10828번 : 스택, 10845번 : 큐 본문

무지성 공부방/알고리즘 해결

[BOJ_C] 10828번 : 스택, 10845번 : 큐

hyerang0125 2021. 3. 2. 22:32

- 문제

- 풀이

#include <stdio.h>
#include <string.h>
#define MAX 10000
int rear = -1;
int stack[MAX];

int pop(){
    if(rear == -1)
        return -1;
    else
        return stack[rear--];
}

void push(int value){
    stack[++rear] = value;
}

void size(){
    printf("%d\n", rear+1);
}

void empty(){
    if(rear == -1)
        printf("1\n");
    else
        printf("0\n");
}

void top(){
    if(rear == -1)
        printf("-1\n");
    else
        printf("%d\n", stack[rear]);
}

int main(){
    char str[6];
    int x, n;
    scanf("%d", &n);

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

        if(strcmp(str, "push")==0){
            scanf("%d", &x);
            push(x);
        }
        else if(strcmp(str, "pop")==0)
            printf("%d\n", pop());
        else if(strcmp(str, "top")==0)
            top();
        else if(strcmp(str, "size")==0)
            size();
        else
            empty();
    }
    return 0;
}

 

- 문제

- 풀이

#include <stdio.h>
#include <string.h>
#define MAX 10000
int rear = -1;
int stack[MAX];
int front = -1;

int pop(){
    if(rear == front)
        return -1;
    else
        return stack[++front];
}

void push(int value){
    stack[++rear] = value;
}

void size(){
    printf("%d\n", rear-front);
}

void empty(){
    if(rear - front == 0)
        printf("1\n");
    else
        printf("0\n");
}

void back(){
    if(rear - front == 0)
        printf("-1\n");
    else
        printf("%d\n", stack[rear]);
}

int main(){
    char str[6];
    int x, n;
    scanf("%d", &n);

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

        if(strcmp(str, "push")==0){
            scanf("%d", &x);
            push(x);
        }
        else if(strcmp(str, "pop")==0)
            printf("%d\n", pop());
        else if(strcmp(str, "front")==0){
            if(rear - front == 0)
                printf("-1\n");
            else
                printf("%d\n", stack[front+1]);
        }
        else if(strcmp(str, "back")==0)
            back();
        else if(strcmp(str, "size")==0)
            size();
        else
            empty();
    }
    return 0;
}

'무지성 공부방 > 알고리즘 해결' 카테고리의 다른 글

[BOJ_C++] 11399번 : ATM  (0) 2021.03.11
[BOJ_C++] 2798번 : 블랙잭  (0) 2021.03.03
[BOJ_C] 1259번  (0) 2021.02.26
[BOJ_C] 10989번  (0) 2021.02.08
[BOJ_C] 1929번  (0) 2021.02.08