알고리즘, SQL/알고리즘

백준 2292번 : 벌집

킹갓홍 2023. 12. 22. 22:35

간단하게 가운데 벌집모양부터 시작해서 인접한 변에 하나씩 추가되는 육각형에, 입력되는 숫자가 간운데로부터 몇번째에 접해있는지 찾는 문제이다!

육각형 하나를 방(room)이라고 생각했을 때, 가운데 1번방과 접해있는 가장 큰 방이 7이다.

7번방과 접해있는 가장 큰 방은 19번, 19번과 접해있는 가장 큰 방은 37번...

즉 1, 7, 19, 37, 61로 6의 배수만큼 커지는 것을 알 수 있다.

 

코드를 생성해보면..

public class Main {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(br.nextLine());
        int count = 1;
        int room = 1;

        while(true) {
            if(num<=room) { //가장 큰 room의 값과 비교해서 작다면 반복문을 나온다.
                break;
            }
            room =room+(6*count); //가장 큰 방의 값은 6의 배수만큼 커진다.
            count++;
        }
        System.out.println(count);

    }
}

 위와 같이 풀 수 있다.