위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 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 |