해당 문제는 간단한 등차수열만 사용하여 풀 수 있습니다.
저는 벌집의 n번째 겹을 이용하여 풀었는데요
1번째 겹 : 1
2번째 겹: 2, 3, 4, 5, 6, 7
3번째 겹: 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
4번째 겹: 20, 21, 22, 23, 24, 25, 26. 27, 28 ... 37
.
.
.
n번째 겹에서 나타나는 규칙을 찾아보면 다음과 같습니다.
2번째 겹의 마지막으로 나타나는 숫자는 1 + 6
3번째 겹의 마지막으로 나타나는 숫자는 1 + 6 + 6 + 6
4번째 겹의 마지막으로 나타나는 숫자는 1 + 6 + 6 + 6 + 6 + 6 + 6
입니다.
수열의 공차는 6, 12, 18, 24 가 될거구요
공차의 공차는 6이 됩니다.
이를 바탕으로 코딩 해볼게요
#include <stdio.h>
int main() {
//6, 12, 18, 24
int n;
int m = 0;
int sum = 1;
int cnt = 0;
scanf("%d", &n);
while(sum < n) {
m += 6;
sum += m;
cnt++;
}
printf("%d", cnt + 1);
return 0;
}
m이 공차이구요
sum은 해당 공차를 바탕으로 n번째 수열의 값을 구합니다.
그리고 원하는 숫자가 해당 수열 범위 안에 있을경우 while 문을 빠져나오고
출력값은 모든 벌집의 갯수를 구해야 하므로 1을 더한값을 출력해주었습니다.
'algorithm > baekjoon' 카테고리의 다른 글
[C] 백준 2869번 write-up (0) | 2023.01.03 |
---|---|
[C] 백준 1193번 write-up (0) | 2023.01.03 |
[C] 백준 1712번 write-up (0) | 2023.01.02 |
[C] 백준 1316번 write-up (0) | 2023.01.02 |
[C] 백준/2941번 write-up (0) | 2023.01.02 |