Java/코딩테스트

[백준] 2292번: 벌집 (JAVA)

다아빈 2025. 4. 3. 20:32
728x90
반응형

문제: https://www.acmicpc.net/problem/2292

문제 접근

방의 개수에 대한 규칙을 찾을라고 했습니다.

처음에 그림으로 그려서 볼까 하다가 그리기 너무 힘들어서..

일단, 문제에서 제공한 사진을 보며, 지나가야하는 방의 개수에 해당하는 방이 뭐뭐 있는지 알아봤습니다.

  • 방 1개: 1
  • 방 2개: 6개의 방이 해당: 2~7
  • 방 3개: 12개의 방이 해당: 8~19
  • 방 4개: 18개의 방이 해당: 20~37
  • 방 5개: 24개의 방이 해당: 28~61

해당하는 방의 개수가 6의 배수씩 늘어나는게 보이시나요?

이 규칙을 적용하여, 코드를 짜보았습니다.

전체 코드

import java.io.*;

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

        int input = Integer.parseInt(br.readLine());
        int answer = 1; // 시작은 무조건 포함
        int room = 1; // 1번 방부터 시작

        while(true) {
            if(input <= room) break;
            room += (6 * answer);
            answer++;
        }

        bw.write(answer + "");
        bw.flush();
    }
}

방의 번호?를 초기화 할 때는, 1로 해주셔야 합니다!

 

또한 문제에서 시작과 끝을 포함한 방이라 하였으니 정답으로 출력할 변수 또한, 1로 초기화해주셔야 합니다.

저는 무한루프로 하여, input이 방의 번호보다 작거나 같게 되면 빠져나가도록 코드를 짜보았습니다.

 

읽어주셔서 감사합니다!

 

728x90
반응형