본문 바로가기

PS/BOJ

[C++] BOJ (백준) 2292 : 벌집

문제

2292번: 벌집 (acmicpc.net)

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

코드
#include <iostream>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    int res = 1;
    int mx = 1;
    for (int i = 1;; i++) {
        if (n <= mx) break;
        res++;
        mx += i * 6;
    }

    cout << res;
    return 0;
}

 

설명

1번 방은 1개의 방을 지나면 갈 수 있다.
2~7번 방은 2개의 방을 지나면 갈 수 있다.
8~19번 방은 3개의 방을 지나면 갈 수 있다.
20~37번 방은 4개의 방을 지나면 갈 수 있다.
38~61번 방은 5개의 방을 지나면 갈 수 있다.
지나가는 방이 하나 늘어날수록, 갈 수 있는 방의 개수는 6, 12, 18... 이렇게 증가하는 걸 알 수 있다.