ALGORITHM

[JAVA] 백준 2292번- 벌집

연듀 2022. 8. 9. 09:49

https://www.acmicpc.net/problem/2292

 

2292번: 벌집

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

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n=Integer.parseInt(br.readLine());
        int room=1, cnt=1;

        while(n>room){ // n이 누적된 방의 수보다 클 때
            n-=room; // 이전 방의 개수 빼주기
            room=6*(cnt++); // 방의 개수
        }
        System.out.println(cnt);
    }
}

 

 

지나가는 최소 개수의 방을 cnt라고 한다면 cnt번째 방의 개수는 6(cnt-1) 이다.

첫번째에는 1개, 두번째에는 6개, 세번째에는 12개 이런식으로 방이 있다.

 

while문을 돌며 입력받은 수가 어느 방에 속해있고 그 때의 cnt가 몇인지 찾으면 된다.