알고리즘 풀이

[C#] 백준 10773번 문제풀이

bimtaeur30 2025. 7. 27. 20:58

안녕하세요.

백준 10773번 '제로' 문제 풀이를 진행해보도록 하겠습니다.

해당 문제는 숫자를 리스트에 추가해가다가 0이 나오면 최근 추가했던 수를 삭제시키고 최종적으로 수를 전부 더해 출력하는 문제입니다.

예제입력

4
3
0
4
0

 

예제출력

0

 

우선, 수의 개수 (N)과 그 수들을 입력으로 받아오겠습니다.

그 후에 수를 추가할 numbers를 리스트로 선언해줍니다.

int n = int.Parse(Console.ReadLine());
List<int> numbers = new List<int>();

 

이제 for문으로 수를 하나씩 받아옵니다.

수가 0이라면 리스트 맨 뒤에 위치한 수를 삭제시키고, 아니라면 리스트에 수를 더해줍니다.

for (int i = 0; i < n; i++)
{
    int num = int.Parse(Console.ReadLine());
    if (num != 0)
    {
        numbers.Add(num);
    }
    else if (numbers.Count > 0)
    {
        numbers.RemoveAt(numbers.Count - 1); // 마지막 제거
    }
}

 

마지막으로 리스트의 값들을 모두 더해 출력해줍니다.

그럼 정답이 출력됩니다.

int answer = 0;
foreach (int num in numbers)
{
    answer += num;
}

Console.WriteLine(answer);

 

오늘은 비교적 쉬운 문제를 풀었습니다.

제한시간이 1초라서 시간초과가 날까 싶었는데 다행이 통과되었네요 🤫

다음은 전체코드입니다.

 

전체코드

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        List<int> numbers = new List<int>();

        for (int i = 0; i < n; i++)
        {
            int num = int.Parse(Console.ReadLine());
            if (num != 0)
            {
                numbers.Add(num);
            }
            else if (numbers.Count > 0)
            {
                numbers.RemoveAt(numbers.Count - 1); // 마지막 제거
            }
        }

        int answer = 0;
        foreach (int num in numbers)
        {
            answer += num;
        }

        Console.WriteLine(answer);
    }
}

'알고리즘 풀이' 카테고리의 다른 글

[C#] 백준 7568번 문제풀이  (3) 2025.07.29
[C#] 백준 1676번 문제풀이  (1) 2025.07.28
[C#] 백준 1260번 문제풀이  (4) 2025.07.26
[C#] 백준 10815번 문제풀이  (1) 2025.07.25
[C#] 백준 2745번 문제풀이  (0) 2025.07.24