개발자 미니민의 개발스터디

[백준 JAVA] 2292번 풀이 - 벌집

by mini_min

import java.io.IOException;
import java.util.Scanner;

/**
 * 2292번 풀이
 * 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다.
 * 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지
 * 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오.
 */
public class Main {
    public static void main(String[] args) throws IOException {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int count = 1;

        //1+(무조건1)  2~7  8~19  20~37   38~61
        //              6 차이    12    18      23 (6씩 차이남)

        int max = 1;
        //i는 차이
        for ( int i = 6; 1000000 > i; i = i + 6){

            if ( n == 1 ) {
                break;
            }

            if ( n > max ){
                max = max + i;
                count++;
            }
            else if ( n < max ){
                break;
            }
        }

        System.out.println(count);
        
        sc.close();
    }
}

 

풀이

룰을 알면 아주 간단한 문제!

벌집의 테두리를 둥글게 이어보면, 한 테두리에 6개의 방이 감싸지는걸 알 수 있다. 

 

1번 방

2~7번 방

8~19번 방 

20~37번 방....

for 문으로 각 테두리의 가장 큰 숫자의 방을 넘지 않는 범위를 구해서 풀었다.

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기