[C언어] 백준 2231 : 분해합

mainsain·2022년 3월 16일
0

백준

목록 보기
13/64

내가 한 문제 이해

  • 분해합 한 후의 값으로 분해합 하기 전을 찾는건 규칙을 도저히 못찾겠다.
    그래서 검색해보니 당연히 규칙이 없다더라. 결국 처음부터 입력값까지 분해합 한 후의 결과값을 다 찾아버리고, 결과값 == n 이면 출력하는 식으로 했다.

내가 푼 방법

#include <stdio.h>

int main()
{
    int i, n;
    scanf("%d", &n);
    int sum;
    i = 1;
    while (i <= n)
    {
        int a = i;
        sum = i; // 초기화
        while(a > 0) // 각 자리수 뽑고 sum에 저장하면서 진행
        {
            sum = sum + a % 10;
            a = a / 10;
        }
        if (sum == n) // n값이 되었다. i출력
        {
            printf("%d", i);
            break;
        }
        if (i == n) // n값을 못찾았다. (배열을 끝까지 돌렸다.)
        {
            printf("0");
            break;
        }
        i++;
    }
}

다른 사람 풀이

#include <stdio.h>

int main()
{
    int N;
    
    scanf("%d", &N);
    
    for (int i = 1; i < N; i++)
    {
        int temp = i;
        int num = i;
        
        while(temp > 0)
        {
            num += temp % 10;
            temp /= 10;
        }
        
        if (num == N)
        {
            printf("%d", i);
            N = 0;
            break;
        }
    }
    
    if (N != 0)
        printf("0");
}

거의 동일하다.

profile
새로운 자극을 주세요.

0개의 댓글

관련 채용 정보