

출처: https://www.acmicpc.net/problem/10773
How to solve?
Main Problem: 0을 입력할 때마다 최근에 쓴 수를 지워야 함
Solve Idea: Stack을 사용한다.
0이 아닐때는 push로 값을 대입하고, 0일 때는 pop을 이용하여 stack의 top에 있는 값을 지운다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 100001
int Stack[MAX];
int top = -1;
void push(int item);
int pop();
int main()
{
int iArrayLen;
int iInputNum;
int iStack[MAX];
int iSum = 0;
int iDel;
scanf("%d", &iArrayLen);
for (int i = 0; i < iArrayLen; i++) {
scanf("%d", &iInputNum);
if (iInputNum == 0) {
iDel = pop();
}
else {
push(iInputNum);
}
}
for (int i = 0; i < top + 1; i++) {
iSum += Stack[i];
}
printf("%d", iSum);
return 0;
}
void push(int item)
{
Stack[++top] = item;
}
int pop()
{
return Stack[top--];
}
몇달 전 이 문제를 보았을 때는 어떻게 접근 해야할지 감도 못잡았는데,,
학교 자료구조 시간에 Stack을 배우고나니 부끄러움이 찾아오네요...
알고리즘 공부 열심히 해야겠다!

'Algorithm > PS' 카테고리의 다른 글
| [Algorithm] BFS란? (0) | 2026.02.09 |
|---|---|
| [BOJ] 11720 - 숫자의 합 (0) | 2026.01.01 |