coding_test/BAEKJOON

백준 1356번 C언어 풀이

CodeJin 2021. 10. 25. 21:35

https://www.acmicpc.net/problem/1356

 

1356번: 유진수

첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다작거나 같은 자연수이다.

www.acmicpc.net

유진수란 10진수 정수에서 두 부분으로 나누어 각각의 자리수를 곱했을 때 둘이 같은 수일 때 유진수라고 한다.

 

예를들어 1236은 123 / 6으로 나누면 6으로 같기 때문에 유진수이다. 또한 1221도 유진수이다. 하지만 1234는 유진수가 아니다.

 

이 문제를 풀면서 간과했던 한가지가, 한자리 숫자는 유진수로 취급하지 않는다는 것이다. 이를 몰라서 왜 틀렸지 하다가 계속 틀렸다.

 

#include <stdio.h>
#include <string.h>

int main () {
    char ch[11];
    int len;
    int n1, n2;
    int i, j;
    scanf("%s", ch);
    len = strlen(ch);
    if (len == 1) {
        printf("NO");
    } else {
        for (i = 0; i < len-1; i++) {
            n1 = 1; n2 = 1;
            for (j = 0; j <= i; j++)
                n1 *= ch[j] - '0';
            for (j; j < len; j++)
                n2 *= ch[j] - '0';
            if (n1 == n2) break;
        }
        printf(n1 == n2 ? "YES" : "NO");
    }
    return 0;
}