BaekJoon(2292)::벌집
문제풀이

BaekJoon(2292)::벌집

문제

 

2292번: 벌집

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

www.acmicpc.net

문제파악

  1. 위 구역을 보면 n번째 범위에 있는 구역까지 n번 이동함을 볼 수 있다.
  2. 빨간선이 구역의 시작과 끝을 비교할수 있음을 알수있다. 
    • 1, 〔1 < n <= 7〕, 〔7 < n <= 19〕, 〔19 < n <= 37〕 ... 〔앞구역 시작 x 6 x (이동거리-1) < n <= 앞구역 끝 x 6 x 이동거리〕

문제풀이

: 위 조건에 맞춰서 구현을 해보겠다.

  1. 1 입력시 바로 출력
  2. i = 1, j = 7 → n>i && n<=j :: (탈출조건)
  3. i += 6 * (cnt - 1), j += 6 * (cnt) :: (구역설정)

소스코드

#include<iostream>
using namespace std;

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

    unsigned int n;
    cin >> n;
    int cnt = 1;

    if (n == 1) {
        cout << cnt ;
        return 0;
    }

    for (int i = 1, j = 7; ; i += 6 * (cnt - 1), j += 6 * (cnt)) {
        cnt++;
        if (n > i && n <= j) {
            break;
        }
    }

    cout << cnt << endl;

    return 0;
}

 

'문제풀이' 카테고리의 다른 글

BaekJoon(1085)::직사각형에서 탈출  (0) 2021.07.19
BaekJoon(2869)::달팽이는 올라가고 싶다  (0) 2021.07.19
BaekJoon(2839)::설탕 배달  (0) 2021.07.19
BaekJoon(2164)::카드2  (0) 2021.07.19
BaekJoon(18258)::큐2  (0) 2021.07.19