개?발/Backjoon

Backjoon 2292 벌집

YUEIC 2025. 6. 5. 10:21

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

 


 

처음에 풀 때 1번을 기준으로 아래방향이 1 + 6 * n 만큼 증가하는걸 보고 ( 1 + 6 * n ) 의 제곱근을 찾으면 되겠거니 했는데 다른 라인들은 증가폭이 제각기 달랐음을 깨닫고 방황했다.

그런데 의외로 답은 간단했다. 그냥 위의 계산대로 증가하면서 주어진 N이 증가폭 안에 존재할 때까지 계속 증가시키고 그 카운트를 반환하면 됐다.

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int num = Integer.parseInt(br.readLine());

        //층
        int floor = 1;
        //증가할 범위
        int range = 1;
        while (range < num) {
            range += 6*floor;
            floor++;
        }

        bw.write(String.valueOf(floor));
        bw.flush();
        bw.close();
    }   
}

 

 

Java_Problem/Backjoon2292Honeycomb.java at main · KwonYunJe/Java_Problem

Contribute to KwonYunJe/Java_Problem development by creating an account on GitHub.

github.com

 

'개?발 > Backjoon' 카테고리의 다른 글

Backjoon1002 터렛  (1) 2025.05.26
Backjoon 2839 설탕배달  (0) 2025.05.26