벌집의 중앙에서 임의의 벌집까지 지나는 방의 개수는 특정 구간에서 동일하다.
1 -> 1
1개 1 -> (2 ~ 7)
2개1 -> (8 ~ 19)
3개를 지난다.즉, 1. 일정한 구간을 어떻게 구할 것인가? 에 대해 고민하는 것이 이 문제의 핵심이다.
초기식 1 -> 1
(1개) 을 제외하고 모든 구간은 개수에 따른 규칙성을 가진다.
예시 이미지에 나온 벌집에 대해 분석해보자.
2 ~ 7
: 이 구간에 해당하는 수의 개수는 6 x 1 = 6개
8 ~ 19
: 이 구간에 해당하는 수의 개수는 6 x 2 = 12개
20 ~ 37
: 이 구간에 해당하는 수의 개수는 6 x 3 = 18개
38 ~ 61
: 이 구간에 해당하는 수의 개수는 6 x 4 = 24개
즉 구간의 범위를 이전 범위에서 6씩 증가시켜가며 해당하는 수가 올 때까지 1씩 더하면 된다.
...
#include <iostream>
using namespace std;
int Solution(const int& n, const int& start, const int& offset) {
const int end = start + offset;
if (n >= start && n < end) {
return 1;
}
return 1 + Solution(n, end, offset+6);
}
int main() {
int n;
cin >> n;
if (n == 1) {
cout << 1;
return 0;
}
cout << 1 + Solution(n, 2, 6);
return 0;
}