제4회 대학생 프로그래밍 경시대회 문제 B 벌집

Source Code

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
29
30
import java.util.Scanner;
public class Honeycomb {
private static final int SIDE = 6; // 벌집 면의 수
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt(); // 테스트 케이스의 개수
for(int i = 0; i < T; i++) {
int N = scan.nextInt(); // 방 번호
System.out.println(process(N));
}
}
public static int process(int N) {
int d = 1; // 지나가는 방의 개수
int lev = 0; // 각 레벨의 방의 개수
while(N > 1) {
lev += SIDE;
N -= lev;
d++;
}
return d;
}
}

Comment

곰곰히 생각해보면 수열 문제로 생각할 수 있다. 벌집의 레벨이 늘어날때마다 각 레벨의 방의 개수가 6개씩 늘어난다. 중앙의 방에서부터 차례로 빼나가다보면 답이 나온다. 이 녀석은 나를 고민을 많이하게 만들었지만 재밌는 문제였다.

Share Comments