백준 28702번 FizzBuzz 문제 C#

김보근·2025년 6월 2일

백준

목록 보기
29/62

📘백준 28702번 FizzBuzz 문제 (C#)


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

🧠 문제 이해

FizzBuzz는 1부터 시작해서

3의 배수면 "Fizz"

5의 배수면 "Buzz"

15의 배수면 "FizzBuzz"

그 외는 숫자 그대로 출력하는 방식이다.

이 문제에서는 FizzBuzz 수열에서 연속된 3개의 항이 주어지고,
그 다음 항을 출력해야 한다.

Fizz  
Buzz  
11

이렇게 입력되면, 다음 항은 Fizz가 된다.

❓ 처음에 헷갈렸던 점

처음에는 입력이 "Fizz", "Buzz", "11" 이렇게 주어지길래
"왜 출력이 Fizz 하나밖에 없지?" 라는 의문이 들었다.
하지만 문제의 핵심은 입력으로 주어진 3개의 항 중 반드시 하나는 정수이며,
그 정수를 기준으로 전체 수열의 위치를 계산할 수 있다는 것이다.

💡 핵심 아이디어

입력에서 숫자 하나만 찾으면 된다.

예를 들어 11이 3번째 줄이라면 (0-based index 2),
FizzBuzz 수열에서 3번째 항이 11이라는 의미니까
11 - 2 = 9 → 수열의 시작값은 9라는 걸 알 수 있다.

즉,

start = num - index

다음 항 = start + 3

이 값을 FizzBuzz 규칙에 맞게 출력하면 끝!

using System;

class Program
{
    static void Main()
    {
        string[] input = new string[3];
        for (int i = 0; i < 3; i++)
            input[i] = Console.ReadLine();

        int start = -1;

        for (int i = 0; i < 3; i++)
        {
            if (int.TryParse(input[i], out int num))
            {
                start = num - i;
                break;
            }
        }

        int next = start + 3;
        Console.WriteLine(GetFizzBuzzValue(next));
    }

    static string GetFizzBuzzValue(int num)
    {
        if (num % 15 == 0) return "FizzBuzz";
        if (num % 3 == 0) return "Fizz";
        if (num % 5 == 0) return "Buzz";
        return num.ToString();
    }
}

✨ 깨달은 점

처음엔 Fizz, Buzz, FizzBuzz 같은 문자열들을 분석해야 하나 고민했지만,
숫자가 반드시 하나 있다는 조건을 이용하면 매우 간단하게 풀 수 있었다.

괜히 복잡하게 생각하면 오히려 풀이가 꼬일 수 있다.
핵심 조건을 정확히 읽는 게 훨씬 중요하다는 걸 다시 느꼈다.

🧩 참고

int.TryParse()를 통해 문자열이 숫자인지 확인 가능

문제를 단순화시킬 수 있는 조건을 잘 파악하자

profile
게임개발자꿈나무

0개의 댓글