코딩/백준 문제 (실버)
[백준/10773/C언어] 제로 _ 풀이
룻밤
2023. 9. 21. 23:41
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>
int main() {
int k, n;
scanf("%d", &k);
int* arr = (int*)malloc(k * sizeof(int));
int sum = 0;
int c = 0;
for (int i = 0; i < k; i++) {
scanf("%d", &n); // n 입력
if (n != 0) { //n이 0이 아닐때
arr[c] = n; //arr[c]는 n
sum += arr[c]; //sum+=arr[c]
}
else { // n이 0일때
sum -= arr[--c]; //sum -= arr[c-1]
c--; // 총 c-2
}
c++; // c+1
}
printf("%d\n", sum);
free(arr);
return 0;
}
1 3 5 4 O 일때 O에 0을 입력하면
1 3 5 이 되어야 하므로
arr인덱스인 c에서 -2 해야 한다.
그렇게 해야 1 3 5 O 의 과정이 만들어진다.