본문 바로가기
Development/Baekjoon

[C#] 2292번: 벌집

by Mobics 2025. 9. 10.

목차


    백준 단계별로 풀어보기

    25.09.10

    8단계: 수학 1


    2292번: 벌집

    문제 링크 : https://www.acmicpc.net/problem/2292

     

    문제 풀이

    >> 문제를 풀기 위해 알아야 할 개념

    - 벌집 중앙에서부터의 거리가 멀수록 늘어나는 번호의 규칙

    : 아래 사진을 보면 벌집 중앙에서부터 거리가 1칸 멀어지면 6개의 방이, 2칸 멀어지면 12개의 방이, 3칸 멀어지면 18개의 방이 늘어난다. 즉, 6의 배수로 방 개수가 더 늘어난다.

    // 1			   거리 0
    // 2 ~ 7 --> 6개	   거리 1
    // 8 ~ 19 --> 12개	   거리 2
    // 20 ~ 37 --> 18개	   거리 3

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

     

    >> 풀이

    1. 방 번호를 입력받아 int 값으로 변환한다.
    2. 벌집 중앙으로부터의 거리와 늘어나는 방 번호를 담을 변수를 선언한다.
    3. 만약 입력값이 1이면 벌집 정중앙이므로 바로 1을 출력하고 끝낸다.
    4. while 반복문을 활용하여 현재 입력값이 1 이상이라면 입력값에 방 개수만큼 빼준 다음 다음 방 개수를 6개 늘리고 벌집 중앙으로부터의 거리를 1 올린다. --> 입력값에 방 개수만큼 뺀 값이 1보다 작거나 같다면 다음 칸으로 갈 수 없다는 뜻이 된다.
    5. 구한 벌집 중앙으로부터의 거리를 출력한다.

     

    정답 코드

    class Backjoon
    {
        static void Main(string[] args)
        {
            int num = int.Parse(Console.ReadLine());
            int range = 1;
            int count = 6;
    
            if (num == 1)
            {
                Console.Write(range);
                return;
            }
    
            while (num > 1)
            {
                num -= count;
                count += 6;
                range++;
            }
    
            Console.Write(range);
        }
    }