전공/Problem Solving

[알고리즘/문제풀이/BOJ 10773번] 제로

caneo 2021. 7. 4. 01:06
728x90
반응형

이 문제는 스택을 활용하는 문제이다. 0이 입력으로 들어왔을 때 stack을 pop하는 조건을 가진 문제로 조건에 따라 stack을 채우고, 마지막에 스택에 있는 모든 원소를 더하여 출력함으로써 풀 수 있다.

작성한 코드는 다음과 같다.


#include<stdio.h>
//https://ark-hive.tistory.com/
int k;
int temp;
int stack[100020];
int top;
int sum;

void pop() {
	if (top == 0) {
		printf("%s\n", "underflow");
	}
	else {
		top -= 1;
	}
}

void push(int num) {
	top = top + 1;
	stack[top] = num;
}

int main(void) {
	scanf("%d",&k);

	for (int i = 0; i < k; i++) {
		scanf("%d", &temp);
		if (temp == 0) {
			pop();
		}
		else {
			push(temp);
		}
	}

	for (int i = 1; i <= top; i++) {
		sum += stack[i];
	}

	printf("%d\n", sum);
}

문제의 지문은 아래의 링크에서 참고하기 바란다.

https://www.acmicpc.net/problem/10773

728x90
반응형