개발하는 쿠키
article thumbnail
반응형

🚀 풀이 후기

오랜만에 알고리즘을 푸니까 또 다 까먹었네요.

BufferedReader, InputStreamReader, String.readLine()을 복습하는 시간이었습니다.

🌒 문제 설명

연속된 세개의 수 이후에 올 숫자를 구하는 문제였습니다.

3의 배수이고, 5의 배수이면, "FizzBuzz",

3의 배수이고, 5의 배수가 아니면, "Fizz",

3의 배수가 아니고, 5의 배수이면, "Buzz",

3의 배수가 아니고, 5의 배수가 아니면 숫자가 입력되거나 출력됩니다.

 

연속된 세개의 수가 모두 3의 배수, 5의 배수가 나오지는 않습니다.

아래 경우처럼 1개의 숫자는 무조건 그대로 입력됩니다.

- 3^n, 3^n+1, 3^n+2

- 5^n, 5^n+1, 5^n+2

- 3, 4, 5

 

따라서 입력받는 문자열 중 숫자가 나오면 다음 문자열을 구하지 않고도 정답을 알 수 있습니다.

 

 

🌓 문제 풀이

입력받는 문자열 중 3의 배수도 아니고, 5의 배수도 아닌 숫자인 경우 정답으로 출력될 수를 num에 저장합니다.

일반 숫자가 첫 번째에 나왔으면 +3, 두 번째에 나왔으면 +2, 세 번째에 나왔으면 +1 을 해주면 됩니다.

 

결과를 출력할 때는 문제 조건에 맞게 출력해줍니다.

- 3의 배수이고, 5의 배수이면, "FizzBuzz",

- 3의 배수이고, 5의 배수가 아니면, "Fizz",

- 3의 배수가 아니고, 5의 배수이면, "Buzz",

- 3의 배수가 아니고, 5의 배수가 아니면 숫자

import java.util.*;
import java.io.*;

public class Main {

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

        for (int i = 3; i > 0; i--) {
            String input = br.readLine();
            if (input.equals("Fizz") || input.equals("Buzz") || input.equals("FizzBuzz")) {
                continue;
            }
            num = Integer.parseInt(input) + i;
            break;
        }

        if (num % 3 == 0 && num % 5 == 0) {
            System.out.println("FizzBuzz");
        } else if (num % 3 == 0) {
            System.out.println("Fizz");
        } else if (num % 5 == 0) {
            System.out.println("Buzz");
        } else {
            System.out.println(num);
        }

    }
}

- 시간복잡도: O(1)

- 공간복잡도: O(1)

 


 

백준 문제

 

반응형
profile

개발하는 쿠키

@COOKIE_

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!