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 의 과정이 만들어진다.
'코딩 > 백준 문제 (실버)' 카테고리의 다른 글
[백준/18352/파이썬] 특정 거리의 도시 찾기 _ 풀이 (0) | 2024.03.04 |
---|---|
[백준/10828/C언어] 스택 _ 풀이 (2) | 2023.12.11 |
[백준/28278/C언어] 스택 2 _ 풀이 (2) | 2023.09.20 |
[백준/11651/C언어] 좌표 정렬하기 2 _ 풀이 (0) | 2023.09.12 |
[백준/1427/C언어] 소트인사이드 _ 풀이 (0) | 2023.09.12 |