[C언어] 백준 2292 : 벌집

mainsain·2022년 3월 13일
0

백준

목록 보기
3/64

먼저 벌집을 보면

a숫자~b숫자
1~11칸
2~72칸
8~193칸
20~374칸

...
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;
        }
    }
}

다른 사람 풀이

솔직히 잘 모르겠음
나처럼 범위를 정해서 푼 사람도 있고
끝 값만 구해놓고 푼 사람도 있는 것 같은데

내 코드가 더 좋은 것 같다
음..
ㅇㅇ 내꺼가 더 나아보임 ㅂㅂ

profile
새로운 자극을 주세요.

0개의 댓글