백준 2292번 - 벌집

한시온·2022년 12월 27일
0

해설

벌집의 중앙에서 임의의 벌집까지 지나는 방의 개수는 특정 구간에서 동일하다.

  • 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;
}
profile
가볍고 무겁게

0개의 댓글