백준 10773번 - 제로 (C#)

김보근·2025년 7월 11일

백준

목록 보기
40/62

백준 10773번 - 제로 (C#)


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

오늘은 백준 10773번 문제인 제로 문제를 풀어봤다.
문제 자체는 간단한 편이었지만, "최근에 쓴 수를 지운다"는 조건 때문에 어떤 방식으로 처리해야 할지 고민이 조금 되었다.

📌 문제 설명

  • 숫자를 하나씩 입력받는다.

  • 0이 입력되면 바로 직전에 입력한 수를 지운다.

  • 모든 입력이 끝난 후, 남아있는 수들의 합을 구한다.

❓ 처음 든 생각

처음에는 "0이 몇 번 나왔는지를 세고, 나중에 그 수만큼 배열에서 제거하면 되지 않을까?" 라고 생각했는데,
그렇게 하면 정확히 어떤 수를 삭제해야 하는지 알 수 없기 때문에 틀린 접근이라는 걸 깨달았다.

즉, 순차적으로 바로바로 처리해야 한다는 점이 중요하다.

💡 사용한 자료구조: Stack

이 문제는 "가장 최근 값을 지운다"는 조건이 있기 때문에
스택 (Stack) 을 사용하는 게 딱 적합했다.
스택은 LIFO(Last In First Out) 구조이기 때문에 Push와 Pop을 통해 쉽게 구현할 수 있었다.

✅ 내가 작성한 코드

using System;
using System.Collections.Generic;

namespace backjoon
{
    internal class Program
    {
        static void Main()
        {
            int count = int.Parse(Console.ReadLine());
            Stack<int> stack = new Stack<int>();

            for (int i = 0; i < count; i++)
            {
                int a = int.Parse(Console.ReadLine());

                if (a == 0)
                {
                    stack.Pop();
                }
                else
                {
                    stack.Push(a);
                }
            }

            int sum = 0;
            foreach (int num in stack)
                sum += num;

            Console.WriteLine(sum);
        }
    }
}

🧠 배운 점

  • "최근의 값만 지운다"는 조건은 Stack을 사용하라는 힌트와 같았다.

  • 입력을 순차적으로 처리하는 구조가 필요한 문제였다.

  • 문제를 보고 자료구조가 떠오르게 연습해야겠다.

🔚 마무리

이 문제를 통해 스택의 기본적인 사용법과 문제를 자료구조로 해결하는 방법을 다시 한 번 복습할 수 있었다.

profile
게임개발자꿈나무

0개의 댓글