profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 3. 6. 12:17

문제 : 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다.

재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다.

재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다.

재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자!

 

 

정답 :

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int size;
	int sum = 0;
	int temp;
	int top = 0;

	scanf("%d", &size);

	int* matrix = malloc(sizeof(int) * size);

	for (int i = 0; i < size; i++)
	{
		scanf("%d",&temp);

		if (temp != 0)
			matrix[top++] = temp;

		else
			top--;
	}

	for (int i = 0; i < top; i++)
	{
		sum += matrix[i];
	}

	printf("%d", sum);
    
    free(matrix)

	return 0;

}

역시나 메모리 동적 할당에 관련된 문제이다.

 

입력값을 받아서 저장한 다음 0인지 아닌지 판단할 변수(temp)가 필요하다.

0이 아닐 경우엔 matrix에 temp 값을 저장해 인덱스(top)를 1 높이고, 0일 경우엔 인덱스(top)를 1 낮춰야한다.

 

마지막에는 top(matrix의 인덱스)만큼 반복하며 matrix의 값을 sum에 누적시키고 sum 값을 출력한다.

 

'ETC' 카테고리의 다른 글

[P4C] BOJ 2003 : 수들의 합 2  (0) 2021.03.06
[P4C] BOJ 10809 : 알파벳 찾기  (0) 2021.03.06
22회 해킹캠프 후기 (feat.성실한 해커상 받은 썰)  (1) 2021.02.23
복사했습니다!