본문 바로가기

[BOJ] - JAVA

[백준] 2292 : 벌집 JAVA 풀이

 

벌집을 잘 보면,

한 층씩 올라갈수록 방의 총 개수가 6*(층수)개씩 증가한다는 걸 알 수 있다.

이를 이용해서 방의 총 개수가 입력받은 N을 넘어갈 때까지 반복문을 돌렸다.

 

예를 들어 N이 13일 때, 2층은 방의 개수가 7이고 3층은 방의 개수가 19개가 된다.

그럼 N(17)은 3층의 방의 개수인 19보다 작으니, 3층에 있다는 걸 알 수 있는 것이다.

 

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

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 layer = 1;
        int rooms = 2; // 2층 이상일 때부터를 생각하는데, 방의 최소 개수는 2임
        
        if(N==1) System.out.print(1); // N == 1이면 1층이니 1을 바로 출력
        
        else{
            while(N>=rooms){ // N보다 방의 총 개수가 많아질 때까지 반복함
                rooms = rooms + 6*layer; // 방의 총 개수를 증가시킴
                layer++; // 층을 증가시킴
            }
            System.out.print(layer);
        }
    }
}