공부하기/백준

[Java] 백준 풀기 1356 - 유진수

XEV 2023. 12. 5. 23:38

자바 백준 1356번

브론즈 1

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

 

1356번: 유진수

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현, 문자열, 브루트포스, 사칙연산

 

 

 

 

 

코드 보기

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력 받은 숫자를 변수에 저장
String input = sc.next();
// 입력된 숫자가 유진수인지 판별하여 결과 출력
if (isEugeneNumber(input)) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
// 유진수인지를 판별하는 함수
public static boolean isEugeneNumber(String num) {
int len = num.length();
// 숫자를 나눠가며 유진수인지 확인
for (int i = 1; i < len; i++) {
// 숫자를 두 부분으로 나눔
String firstPart = num.substring(0, i);
String secondPart = num.substring(i);
// 두 부분의 자릿수 곱이 같으면 유진수이므로 true 반환
if (calculateProduct(firstPart) == calculateProduct(secondPart)) {
return true;
}
}
// 모든 경우를 확인했지만 유진수가 아닌 경우 false 반환
return false;
}
// 숫자의 각 자릿수를 곱하여 결과 반환하는 함수
public static long calculateProduct(String num) {
long product = 1;
// 각 자릿수를 곱함
for (int i = 0; i < num.length(); i++) {
int digit = Character.getNumericValue(num.charAt(i));
product *= digit;
}
// 곱한 결과 반환
return product;
}
}