백준/백준 단계별 문제풀이

백준 2292번 (C++)

FDEE 2020. 8. 23. 21:48

www.acmicpc.net/problem/2292

 

2292번: 벌집

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

www.acmicpc.net

 

<답안>

#include <iostream>

using namespace std;

int main() {

    int n;

    int i = 0;

    int result = 1;

    int temp = 0;

    cin>>n;

    temp = n-1;

    if(n == 0)

        cout<<1;

    else

    {

        while(temp > 0)

        {

            result++;

            i++;

            temp -= 6*i;

        }

        cout<<result;

    }

    

    return 0;

}

 

<설명>

쭉 나열을 하여 규칙을 먼저 찾아보았다

입력된 n-1값을 토대로

0 : 1

1~6 : 2 (6가지)

7~18 : 3 식이다 (12가지)

즉, 입력된 숫자를 -6, -12, -18... 식으로 6의 배수만큼 빼보며 증가된 result 무언가를 구하면 되는 식이였다

 

찾은 규칙은 n-1값을 temp에 저장한 다음, result는 1부터, i는 0부터 시작하여

temp값을 차례로 6, 12, 18을 빼보며 result도 같이 증가시킨다

temp값이 0보다 큰 경우에만 반복하며 구해진 result를 출력시킨다

 

 

'백준 > 백준 단계별 문제풀이' 카테고리의 다른 글

백준 2869번 (C++)  (0) 2020.08.25
백준 1193번 (C++)  (0) 2020.08.23
백준 2839번 (C++)  (0) 2020.08.23
백준 1712번 (C++)  (0) 2020.08.23
백준 1316번 (C++)  (0) 2020.08.23