프로그래밍/백준

[백준 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로 두면 된다.