Algorithm/Java
[알고리즘_Java] 백준 2292번 벌집
Cune
2022. 2. 2. 11:23
저는 각 층에 있는 방 수를 세어봤는데 (층 수-1)*6씩 늘어나는 것을 알아 냈고 위처럼 패턴을 이해했습니다.
N이 전 층까지의 방 수보다 크고 현재 층까지의 방 수까지보다 작거나 같을때 현 층을 알 수 있습니다.
1층은 예외로 먼저 처리했고 2층부터 시작해서 min과 max로 층을 확인했습니다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int max = 1; //1층 방 1개 기본으로 시작
int min = 0;
int floor = 2; //2층부터 시작
if(N != 1) {
while (true){
max += (floor - 1) * 6; // 2층일때 7 -> 3층일때 19
min = max - (floor - 1) * 6; //2층일때 1 -> 3층일때 7
if (N > min && N <= max) { //1보다 N이 크고 7보다는 작거나 같을때 2층
bw.write(floor + "");
bw.flush();
break;
}else{
floor++;
}
}
}else{
bw.write("1"); // N=1일때는 당연히 방 1개
bw.flush();
}
}
}
한달전쯤에 도전했을때는 문제부터 이해하는게 어려워서 블로그 서치를 통해서 어느정도 이해하고 그 방법대로 풀었음에도 틀렸었다... 분명 완벽하게 이해하지 못했고 어느부분에서 실수했던게 틀림없었다. 이번에는 문제의 패턴을 이해하고 내방법대로 푸니까 더 이해하기도 쉬웠다! 수학문제라고 겁내지말고 차근차근 도전해보도록하자~