

풀이
- 이 문제는 쉽다고 생각했으나 규칙을 찾는데에 시간이 조금 걸렸다.
- 아래 사진처럼 각 층마다 방의 개수는 6씩 증가하는 규칙이 있다.
- 이 규칙을 이용하면, 초록색으로 체크되어있는 각 층의 최소값을 구할 수 있다.
- range변수는 초기값이 2로 2층의 최소값을 갖는다.
- 1층~m층까지 증가할 때마다 방 수는 6씩 증가하므로
(1층:1개, 2층:6개, 3층:12개, 4층:18개 ...)
- 각 층의 최소값 range = 2층:2~, 3층:2+61=8~, 4층:8+62=20, 5층:20+6*3=38 이렇게 계산할 수 있다.

- 입력한 N값 < 다음층 최소값 range 이면, 현재층에 N번방이 존재하는 것이므로 break 후 cnt를 출력해주면 된다.
import java.io.*;
import java.lang.*;
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 cnt = 1;//벌집 중앙 1포함 카운팅
int range = 2;//m층의 최소값- 기본값은 2층의 최소값 2로
//1층~m층까지 증가할 때마다 공간 방 수 6씩 증가
//1층:1개, 2층:6개, 3층:12개, 4층:18개 ...
//각 층의 최소값 range = 2층:2~, 3층:2+6*1=8~, 4층:8+6*2=20, 5층:20+6*3=38
if(N==1){
System.out.println(1);
}
else {
while(true){
//N이 다음 층의 최소값보다 작으면, cnt++하지 않고 탈출
if(N < range){
break;
}
range = range + (6 * cnt);//다음 층 최소값 계산 8 20 38
cnt++; // 2층 3 4
}
System.out.println(cnt);
}
br.close();
}
}