프로그래밍/백준
[백준 C언어] 2292. 벌집
서요서요
2022. 12. 22. 21:21
나의 풀이
#include <stdio.h>
int main(void) {
int n, room=1, cnt=1;
scanf("%d", &n);
while (room < n) {
room += cnt * 6;
cnt++;
}
printf("%d", cnt);
}
벌집은 한 겹 둘러싸일 때마다 일정한 간격으로 늘어난다.
중앙을 0번째 겹이라고 치고 첫 번째 값은 1, 다음 겹에서 제일 큰 값은 7, 그 다음은 19, ...이런 식인데,
여기에서 규칙성을 찾을 수 있다.
순서(i) | 0 | 1 | 2 | 3 | 4 |
숫자 | 1 | 7 | 19 | 37 | 61 |
규칙 | 1+6*0 | 1+6*1 | 7+6*2 | 19+6*3 | 37+6*4 |
이전 항+6*i가 되는 것이다.
즉 답을 구하려면 저 규칙에 따라 쭉쭉 올라가며,
값이 문제의 입력값 n을 넘어섰다면 그대로 i를 반환해주면 정답이다.
문제에서는 중앙값인 1도 지나간 방으로 판정하므로
시작값은 1로 두면 된다.