[백준 2292번] 벌집
[백준 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인 경우를 따져주지 않았기 때문이다.
댓글남기기