최대 1 분 소요

[백준 2292번] 벌집

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Scanner;
public class 백준_손수경_정답_2292 {
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        long room_Num = sc.nextLong();
        int room_Cnt = 1;
        long temp = (room_Num - 1); 
        
        //입력받은 방번호가 1일때를 처리해주지 않아서 계속 틀림으로 나옴.
        if (room_Num == 1) {
            System.out.println(1);
        }
        else {
            while (true) {
                temp -= 6 * room_Cnt;
                room_Cnt++;
    
                if (temp <= 0) {
                    break;
                }
            }
            System.out.println(room_Cnt);
        }
    }
 
}
cs


이 문제같은 경우, 방을 1번 이동할 때마다 6의 배수만큼 방이 늘어남을 이용하는 문제다. temp 에서 6, 12, 18..등 6의 배수만큼을 빼주면서 그 수가 0보다 작거나 같으면 무한 루프를 break한다. 0보다 작거나 같다는 말은 즉 그 범위안에 입력받은 방번호가 있다는 뜻이기 때문이다. 규칙을 찾아내는 것은 그렇게 어렵지 않았는데 계속 틀렸던 이유는 입력받은 값이 1인 경우를 따져주지 않았기 때문이다.

댓글남기기