문제 자체는 이해하기 쉬웠고, 규칙도 찾았는데 이걸 코드로 짜는 과정에서 삽질을 엄청나게 했다. 쓸데없이 어렵게 생각한 것 같다.. 재귀함수를 쓰려했다
벌집은 먼저 1을 기준으로 겉에 껍질이 생기는 것처럼 커진다. 이걸 벌집 층(?)이라고 하면,
1층은 1
2층은 2,3,4,5,6,7
3층은 8,9,10,11,12,13,14,15,16,17,18,19
...
식으로 이어진다.
이때, 각 층의 벌집 방 개수는 1층에 1개, 2층에 6개, 3층에 12개, 4층에 18개로
1층을 제외한 층에서는 이전 층의 벌집개수+6
만큼 방이 생긴다.
import java.io.*;
public class No2292_벌집 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(br.readLine());
int cnt=1; //몇겹을 지나야 도착하는지 count
int sum=1; //각 층의 최대 숫자
if (x==1)
System.out.println("1");
//1이면 바로 1출력
else {
while (sum<x) {
sum+=6*cnt; //현재 층의 최대 숫자
//이전층의 최대숫자 + 현재층의 벌집 개수
cnt++;
}
System.out.println(cnt);
}
}
}