https://www.acmicpc.net/problem/28702
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. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 17413번 - 단어 뒤집기 2 [Java] (0) | 2025.01.14 |
---|---|
[백준] 2999번 - 비밀 이메일 [Java] (0) | 2025.01.14 |
[백준] 5635번 - 생일 [Java] (0) | 2025.01.14 |
[백준] 11098번 - 첼시를 도와줘! [Java] (0) | 2025.01.14 |
[백준] 6996번 - 애너그램 [Java] (0) | 2025.01.14 |