공부/백준(C++) - 2022~

백준 2292번: 벌집 [C++]

상연 2022. 1. 12. 22:18

목차

    https://www.acmicpc.net/problem/2292

     

    2292번: 벌집

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

    www.acmicpc.net

     

    코드

    #include <iostream>
    using namespace std;
    
    int main() {
    	int n, room = 1, pass = 1;
    	cin >> n;
    	
    	while((n - 1) > 0){
    		n -= 6 * pass++;
    	}
    	cout << pass;
    }

     

    설명

    벌집에서 중앙 1을 기준으로 둘러싼 방의 끝번호가 있다.

    1, 7, 19, 37, 61 ...

    이 수의 규칙을 찾으면 간단하게 풀 수 있는 문제이다.

    1 + 6 = 7

    7 + 6 * 2 = 19

    19 + 6 * 3 = 37

    ...

    이전 끝번호 방에서 6 * n한 수가 다음 끝번호 숫자인것이다.

    따라서 이 n을 통과한 방 개수로 가정을 하고 코드를 작성하면 풀 수 있는 문제였다.