자바/코딩테스트

[백준] 좋은 암호 - Java(자바)

대전집주인 2024. 3. 23. 16:56
728x90
SMALL

 

k 값의 최소 인수분해 값을 구한다. 최소 인수분해보다 l의 값이 크면 나쁜 암호이고 값이 작거나 같으면 좋은 암호로 출력해준다.

이 문제의 경우 알고리즘적으로는 어렵지 않다.

제한부분을 보면 4 ≤ K ≤ 10100 로 단순 int 형의 범위를 벗어나기때문에 BigInteger를 사용하였다.

 

public class Main{
	
	// 좋은 암호 2061	
	public static void main(String[] args) throws IOException{

		// 제한값이 1,000,000 까지라 int로 커버 불가능해 BigInteger 사용
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		BigInteger k = new BigInteger(st.nextToken());
		BigInteger l =  new BigInteger(st.nextToken());
		int num = 2;
		
		for(int i =2; i<l.intValue(); i++) {
			// k%num == 0 이랑 동일
			if(k.remainder(BigInteger.valueOf(num)).compareTo(BigInteger.ZERO) == 0) {
				break;
			}
			
			num++;
		}
		
		// num < l 클경우 좋은 경우가 아니다
		if(l.compareTo(BigInteger.valueOf(num)) == 1) {
			System.out.println("BAD " + num);
		}else {
			System.out.println("GOOD");
		}
	}
}
728x90
LIST