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
'자바 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 숫자의 표현 - Java(자바) (0) | 2024.03.25 |
---|---|
[프로그래머스] 올바른 괄호 - Java(자바) (0) | 2024.03.25 |
[백준] 집 주소 - Java(자바) (0) | 2024.03.23 |
[백준] 핸드폰 요금 - Java(자바) (0) | 2024.03.23 |
[프로그래머스] 수박수박 - Java(자바) (0) | 2024.03.23 |