본문 바로가기
Algorithm/Baekjoon

Baekjoon 1356 유진수 JAVA

by Hunveloper 2022. 5. 27.
728x90
 

1356번: 유진수

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

www.acmicpc.net

문제

유진수는 어떤 수를 10진수로 표현한 뒤 그 수를 두 부분으로 나눴을 때, 앞부분 자리수의 곱과 뒷부분 자리수의 곱이 같을 때를 말한다.

예를 들어, 1221은 유진수이다. 12와 21로 나눴을 때, 앞부분 자리수의 곱 1*2는 뒷부분 자리수의 곱 2*1과 같기 때문이다. 1236도 마찬가지로 유진수이다. 하지만, 1234는 아니다. 수를 나눌 때 항상 연속된 자리수를 나눠야하고, 각 부분에 적어도 한자리는 있어야 한다.

예를 들어, 12345는 총 4가지 방법으로 나눌 수 있다. 1-2345, 12-345, 123-45, 1234-5 어떤 수 N이 주어질 때, 이 수가 유진수인지 아닌지 구하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 N이 유진수이면 YES, 아니면 NO를 출력한다.

풀이

입력받은 값을 정수형이 아닌 문자열로 받아서 character형태로 계산을 한다.

각각 한부분씩 나누어서 조건에 맞게 1-2345, 12-345, 123-45, 1234-5 형태로 각각 계산하면서

하나라도 동일한 값이 나온다면 출력값을 YES로 설정하고 종료한다.

코드
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String arr=sc.next(),ans="NO";
		int len=arr.length();
		if(len>1) {
			for(int i=1;i<len;i++) {
				int a=1, b=1;
				for(int j=0;j<i;j++)
					a*=(arr.charAt(j)-'0');
				for(int j=i;j<len;j++)
					b*=(arr.charAt(j)-'0');
				if(a==b) {
					ans="YES";
					break;
				}
			}
		}
		System.out.println(ans);	
	}
}

 

728x90
728x90

'Algorithm > Baekjoon' 카테고리의 다른 글

Baekjoon 1010 다리 놓기 JAVA  (0) 2022.05.27
Baekjoon 1075 나누기 JAVA  (0) 2022.05.27
Baekjoon 4641 Doubles JAVA  (0) 2022.05.27
Baekjoon 1668 트로피 진열 JAVA  (0) 2022.05.27
Baekjoon 1076 저항 JAVA  (0) 2022.05.22

댓글