FizzBuzz 추론 문제 응용 (백준 28702 기반 커스텀 문제)

김보근·2025년 6월 2일

백준

목록 보기
30/62

🎯FizzBuzz 추론 문제 응용 (백준 28702 기반 커스텀 문제)

오늘은 백준 28702번 FizzBuzz 문제를 응용한 커스텀 문제를 풀어봤다.
문제 핵심은 간단하게 말하면 "숫자 한 개만 주어졌을 때 FizzBuzz 수열의 시작점을 추론해서 다음 항을 출력"하는 것.

📌 문제 요약

입력으로 4개의 항이 주어진다. 항은 숫자이거나, Fizz/Buzz/FizzBuzz 중 하나일 수 있다.
이 중 적어도 하나는 숫자이기 때문에, 그 숫자가 수열의 몇 번째 값인지를 역산할 수 있다.

FizzBuzz 규칙은 다음과 같다:

3의 배수면 "Fizz"

5의 배수면 "Buzz"

15의 배수면 "FizzBuzz"

그 외에는 숫자 그대로 출력

내가 해야 할 일은 이 규칙을 바탕으로 다음 항의 값을 출력하는 것이다.

🔍 핵심 로직

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

입력 중 숫자를 발견하면 → start = 숫자 - 해당 인덱스

즉, 수열의 시작 숫자를 추정할 수 있음

이후 start + 4가 우리가 구해야 할 다음 항이 된다

🔧 구현 코드

using System;

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

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

            next += 4;

            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 문제는 단순 출력이 아니라, 역으로 수열의 흐름을 추론하는 연습이 되어 흥미로웠다

🔁 다음에 도전할 것

비슷한 규칙을 가진 커스텀 수열 추론 문제 만들어보기

입력 항 수가 5개 이상이 되거나, 숫자가 2개 이상일 때 어떻게 응용할 수 있을지 고민해보기

profile
게임개발자꿈나무

0개의 댓글