#57. 백준 2292번 문제 풀이: 벌집 문제 원본 보기
육각형 방으로 이루어진 벌집이 있다. 중앙의 1번 방을 시작으로, 다음겹에는 1번 방을 둘러싼 2~7번의 방들, 그 다음에는 그 방들을 둘러싼 8~19번의 방들...이 오게 된다. 숫자 N이 주어졌을 때 몇개의 방을 거쳐야 갈 수 있는지 출력하시오. 예를 들어, 13까지는 3개, 58까지는 5개를 지난다.
입력/출력
--입력--
13
--출력--
3
문제풀이+해설
이 문제의 핵심은 규칙을 빨리 파악하는게 관건이다.
사실 프로그래밍 능력보다는 문제해결 능력이 요구되는 문제이다.

문제의 규칙을 찾아보면 벌집이 한겹에 6의 배수로 증가하는 것을 볼 수있다.
1겹:(2~7번)6개 방, 2겹:(8~19번)12개 방, 3겹:(20~37번) 18개 방
그러므로 제시한 수가 몇번째 겹이 들어가 있느냐를 계산해 주면 된다.

--
루프 (N 이 겹내갯수합 보다 작으면 계속)
  방개수총합 = 방개수총합 + 겹 * 6
  겹 += 1
루프 끝
출력(겹+1)
--
code sol.
#include <stdio.h>

int main() {
  int n, cnt, room;
  scanf("%d", &n); // 도착 방번호를 입력받는다.
  cnt = 1; // 겹수(거치갈 방개수), 1부터 카운트
  room = 1; // 방개수, 1부터 카운트
  while(room < n) { // 현재 방개수가 도착 방번호보다 작으면 계속 루프 
    room += cnt * 6; // 한겹에 6의 배수씩 방개수 증가
    cnt++;
  }
  printf("%d", cnt); // 방의 겹수, 즉 거쳐가야할 방의 개수 출력
  return 0;
}
© 코드솔 - CodeSol. All Rights Reserved.