백준 2292번 벌집 문제 – C# 풀이

김보근·2025년 5월 22일

백준

목록 보기
21/62

📘 [백준 2292번] 벌집 문제 – C풀이

오늘은 백준에서 2292번 - 벌집 문제를 풀어봤다.
문제 자체는 단순한 수학 규칙 문제인데, 벌집의 패턴이 꽤 흥미로웠다.

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

🐝 벌집의 구조

처음엔 대충 벌집이 육각형 형태로 퍼진다는 건 알았지만,
구체적으로 몇 개씩 늘어나는지 잘 모르겠어서 손으로 적어봤다.

1단계: 1

2단계: 2~7 (6개)

3단계: 8~19 (12개)

4단계: 20~37 (18개)

...

이렇게 6의 배수로 방 개수가 늘어난다.
즉, 중심에서 한 칸씩 멀어질수록 6, 12, 18, 24... 이런 식으로 방이 추가된다.

💡 접근 방식

방 번호 n이 주어졌을 때, 최소 몇 개의 방을 지나야 하는지를 구하는 문제다.

처음에는 어떤 수학공식이나 누적합을 써야 하나 싶었는데,
사실상 그냥 단순 반복문으로 충분히 해결된다.

int n = int.Parse(Console.ReadLine());

int count = 1; // 지나야 할 최소 방 개수 (1부터 시작)
int range = 1; // 현재 범위의 최대 방 번호

while (range < n)
{
    range += 6 * count;
    count++;
}

Console.WriteLine(count);

🔍 예시로 이해해보기

입력: n = 20

반복문을 돌면서 범위를 확장해보면:

range = 1   count = 1  → 아직 20보다 작음
range = 7   count = 2  → 아직 작음
range = 19  count = 3  → 아직 작음
range = 37  count = 4  → 여기서 멈춤 (range >= n)

즉, 20번 방에 도달하려면 최소 4개의 방을 지나야 한다.
출력은 4.

✍️ 느낀 점

처음엔 range랑 count를 1로 잡고 while문을 돌린다는 게 좀 낯설었는데,
생각해보면 n = 1이면 애초에 while문을 안 타니까 바로 1 출력이 되는 구조다.

별거 아닌 반복문 하나로 이런 규칙을 표현할 수 있다는 게 꽤 재밌었다.

📎 핵심 포인트 정리

벌집은 중심에서 6의 배수로 확장된다.

range는 현재 범위의 끝 방 번호

range < n일 때만 범위를 확장하고, range >= n이 되면 종료

그때의 count가 곧 답이다

profile
게임개발자꿈나무

0개의 댓글