[백준, BOJ 2292] 벌집 (java)
Problem Solving/BOJ

[백준, BOJ 2292] 벌집 (java)

728x90

출처-https://www.acmicpc.net/problem/2292

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌��

www.acmicpc.net


 

내 생각

위의 그림에서 각각 다른 색으로 층을 나눠 보았다.
다음 그림을 표로 정리하면 아래와 같다.

현재 층의 육각형의 개수 전체 층의 육각형의 개수
1 1 1
2 6 7
3 12 19
4 18 37
5 24 61
~ ~ ~

이 표에서 알 수 있는 사실은 각 층은 전의 층보다 6개만큼의 육각형이 더 있다.
각 면에서 하나씩 육각형이 더 생기는 구조이다.
6개의 면에서 하나씩 더 생기므로 층이 증가할 때마다 6개 만큼의 육각형이 더 생기는 것이다.

n층에서 중앙인 1 즉, 1층으로 가기 위해서는 n개의 방을 지나가야 한다.
따라서 전달 받은 숫자가 몇 층에 존재하는지만 알면 최소 몇 개의 방을 지나가야 하는지 알 수 있다.

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int layer = 1;
		int num = 0; // 현재 층의 육각형의 개수
		int totalNum = 1; // 전체 층의 육각형의 개수
		
		while (true) {
			if (n <= totalNum)
				break;
			else {
				num += 6;
				totalNum+=num;
				layer++;
			}
		}
		System.out.println(layer);
	}

}
728x90