C언어/C언어 문제
[C언어] 백준 1356번: 유진수
renne
2022. 7. 31. 02:20
https://www.acmicpc.net/problem/1356
1356번: 유진수
첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다.
www.acmicpc.net
유진수: 어떤 수를 10진수로 표현한 뒤, 그 수를 두 부분으로 나눴을 때 (앞부분 자리수의 곱) = (뒷부분 자리수의 곱)
1236의 경우
1 ≠ 2 * 3 * 6
1 * 2 ≠ 3 * 6
1 * 2 * 3 = 6 → 유진수
#include <stdio.h>
#include <string.h>
int main(){
int len, left, right;
int judge = 0;
char num[11];
scanf("%s", num);
len = strlen(num);
if (len == 1){ //앞부분과 뒷부분으로 나눌 수 없으므로 무조건 NO
printf("NO");
return 0;
}
for (int i = 0; i < len - 1; i++){
left = 1;
right = 1;
for (int j = 0; j <= i; j++)
left *= num[j] - '0'; //앞부분 자릿수의 곱
for (int j = i + 1; j < len; j++)
right *= num[j] - '0'; //뒷부분 자릿수의 곱
if (left == right){ //(앞부분 자릿수의 곱) = (뒷부분 자릿수의 곱)
judge = 1;
break;
}
}
if (judge) printf("YES");
else printf("NO");
return 0;
}