728x90
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
#include <stdio.h> // 제로
#include <stdlib.h>
typedef struct
{
int* stk;
int ptr;
}STACK;
int is_empty(STACK* s)
{
if (s->ptr <= 0)
return 1;
else
return 0;
}
void push(STACK* s, int num, int k, int *sum)
{
if (s->ptr <= k)
{
s->stk[s->ptr++] = num;
*sum += num;
}
}
void pop(STACK* s, int *sum)
{
if (!is_empty(s))
{
*sum -= s->stk[--s->ptr];
}
}
int main()
{
int k;
scanf("%d", &k);
STACK s;
s.stk = malloc(k * sizeof(int));
s.ptr = 0;
int num, sum = 0;
for (int i = 0; i < k; i++)
{
scanf("%d", &num);
if (num)
push(&s, num, k, &sum);
else
pop(&s, &sum);
}
printf("%d", sum);
return 0;
}
MEMO
-- 문제를 읽고 바로 스택이 떠올랐다
-- 스택의 구현으로 간단하게 해결가능
!! 기본 다지기 !!
728x90
728x90
'백준[baekjoon] > C언어' 카테고리의 다른 글
백준(baekjoon) [C] - 24262번: 알고리즘 수업 - 알고리즘의 수행 시간 1 (0) | 2023.03.16 |
---|---|
백준(baekjoon) [C] - 11659번: 구간 합 구하기 4 (0) | 2023.03.01 |
백준(baekjoon) [Python] - 11051번: 이항 계수 2 (0) | 2023.02.28 |
백준(baekjoon) [C] - 1835번: 카드 (0) | 2023.02.26 |
백준(baekjoon) [C] - 2589번: 보물섬 (0) | 2023.02.25 |