본문 바로가기
Problem Solving/백준

[백준] 10773번 : 제로

by shinbian11 2020. 2. 24.

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

 

10773번: 제로

문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤

www.acmicpc.net

 

#include <stdio.h>
int arr[100000];
int idx = 0;
int* stack(int num)
{
	
	if (num == 0)
	{
		idx--;
		arr[idx] = 0;
	}
	else
	{
		arr[idx] = num;
		idx++;
	}
	return arr;
}
int main()
{
	int n, sum = 0;
	scanf("%d", &n);
	int num;
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &num);
		int* arr = stack(num);
	}
	for (int i = 0; i < n; i++)
	{
		sum += arr[i];
	}
	printf("%d\n", sum);
}

> 어짜피 arr에 있는 모든 값의 합을 구하는게 답이기 때문에,

굳이 pop() 함수를 구현해서 return 을 하는 과정은 필요없다고 생각하여,

0이 입력되면 index값을 하나 줄여서, 지워야 하는 값을 0으로 갱신했다.

그렇게 되면 arr 배열의 모든 합인 sum을 구하는데에 있어서 영향을 끼치지 않게 된다.

'Problem Solving > 백준' 카테고리의 다른 글

[백준] 2523번: 별 찍기 - 13  (0) 2020.03.15
[백준] 1436번 : 영화감독 숌  (0) 2020.02.29
[백준] 1932번 : 정수 삼각형  (0) 2020.02.25
[백준] 2751번 : 수 정렬하기 2  (0) 2020.02.24
[백준] 10828번 : 스택  (0) 2020.02.24