본문 바로가기
코딩테스트 준비/백준

[백준] 28702번 - FizzBuzz [Java]

by mwzz6 2025. 1. 14.

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

 

[백준] 28702번 - FizzBuzz [Java]
[백준] 28702번 - FizzBuzz [Java]


1.  아이디어

 

FizzBuzz 문제에서 연속으로 세 수가 모두 숫자가 아닐 수 없다.


2. 문제풀이

 

3의 배수면서 5의 배수가 아닌 Fizz, 5의 배수면서 3의 배수가 아닌 Buzz, 3의 배수면서 5의 배수인 FizzBuzz는 3가지가 연속으로 등장할 수 없다. 이를 활용해 세가지 입력값 중 숫자가 등장한 경우를 isNumber 메서드로 찾은 후 해당 숫자의 위치로 연속으로 출력된 세 개의 문자열 다음에 올 숫자를 구한다. 해당 숫자가 다시 3의 배수, 5의 배수인지 여부를 getFizzBuzzNumber 메서드로 판단해서 출력하도록 구현했다.


3. 코드

 

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String num1 = br.readLine();
        String num2 = br.readLine();
        String num3 = br.readLine();

        int num;

        if (isNumber(num1)) num = Integer.parseInt(num1) + 3;
        else if (isNumber(num2)) num = Integer.parseInt(num2) + 2;
        else num = Integer.parseInt(num3) + 1;

        System.out.println(getFizzBuzzNumber(num));
    }

    private static boolean isNumber(String str) {
        return !str.equals("Fizz") && !str.equals("Buzz") && !str.equals("FizzBuzz");
    }

    private static String getFizzBuzzNumber(int num) {
        if (num % 15 == 0) return "FizzBuzz";
        else if (num % 3 == 0) return "Fizz";
        else if (num % 5 == 0) return "Buzz";
        else return Integer.toString(num);
    }

}

4. 후기