먼저 벌집을 보면
a숫자 | ~ | b숫자 | 칸 |
---|---|---|---|
1 | ~ | 1 | 1칸 |
2 | ~ | 7 | 2칸 |
8 | ~ | 19 | 3칸 |
20 | ~ | 37 | 4칸 |
...
b숫자에서 1칸씩 늘어날 때마다, +6, +12, +18.. 이런 식으로 증가하는 걸 알 수있다.
따라서 while문에 i++을 진행해주면서, 6을 곱해주면서 진행했다.
또한 a숫자는 이전 b숫자보다 1이 크다는 걸 기억하자.
#include <stdio.h>
int main()
{
int i = 1;
int n;
int sum = 1, sum1 = 1;
scanf("%d", &n);
if (n == 1)
{
printf("1");
return 0;
} // n이 1일 경우에 1 출력 후 종료
while (1) // 무한루프를 돌린다. 결국엔 n값을 찾아버리기 때문
{
sum = sum + 6 * i; // b숫자 정하는 식
sum1 = sum1 + 6 * (i - 1); // a숫자 정하는 식
i++; // i값을 기억해주면서 가자.
if ((n > sum1) && (n <= sum)) // a ~ b값 사이일 경우 출력.
// a는 자기 자신보다 1 크므로, '>'을 사용, b는 자기 자신값 포함 '<=' 사용
{
printf("%d", i); // 출력 후 종료
break;
}
}
}
솔직히 잘 모르겠음
나처럼 범위를 정해서 푼 사람도 있고
끝 값만 구해놓고 푼 사람도 있는 것 같은데
내 코드가 더 좋은 것 같다
음..
ㅇㅇ 내꺼가 더 나아보임 ㅂㅂ