갑자기 벌집 아이스크림이 먹고 싶어져서 선택한 문제와 사진이라도 보고싶어서 찾아본 벌집 아이스크림 사진. 맛있겠다.. 쩝...
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
N = 1(1개)이면 1개,
N = 2~7(6개)이면 2개,
N = 8~19(12개)이면 3개,
N = 20~37(18개)이면 4개, ...
N을 입력받고 N이 어느번째 구간에 속하는지만 계산해주면 몇 개의 방을 거쳐야한는 알 수 있다.
늘어나는 개수가 N = 1을 제외하고 6개씩이므로 이를 이용해서 반복문으로 코드를 짜주면 된다.
#include <stdio.h>
int main() {
int N, i, num = 1;
scanf("%d", &N);
for (i = 1; i <= N; i++) {
num += (i - 1) * 6;
if (N <= num) {
break;
}
}
printf("%d\n", i);
return 0;
}
벌집 아이스크림 먹고싶어서 들어왔다가 갑자기 이 문제 뭐지..? 해서 다른거 풀까 했다가 다시 차근차근 생각해봐서 패턴이 보인 문제. 먹을거 생각 그만하고 차분히 생각해보자^^