본문 바로가기
코딩 테스트/[JAVA] 백준

[JAVA] 백준 7789번 텔레프라임 | BOJ 자바

by M개발자 2022. 3. 24.
반응형

텔레프라임

 

소수를 매우 좋아하는 수학자가 있다. 이 수학자는 매번 전화번호를 받을 때 마다, 그 전화번호가 소수인지 아닌지를 검사한다. 수학자는 자신의 모든 친구의 전화번호가 소수인지 아닌지를 기억하고 있다.

계속해서 늘어나는 휴대전화 인구의 급증에 따라 정부는 한 자리를 기존 번호 앞에 붙이는 정책을 시행하기로 했다.

수학자는 큰 고민에 빠졌다. 소수 전화번호를 가지고 있는 친구의 전화번호가 이제 평범한 숫자가 될 수도 있기 때문이다.

수학자의 친구 중 한 사람의 원래 전화번호와 새로이 앞에 붙는 번호 한 자리가 주어졌을 때, 원래 전화번호와 새로운 전화번호가 모두 소수인지 아닌지를 구하는 프로그램을 작성하시오.


예제 입출력

 

입력 출력
946859 2 Yes

 


코드

 

1. 기존 전화번호 입력받기

 

2. 새로운 전화번호 입력받기

새로운 전화번호는 입력받은 두번째 숫자와 기존 전화번호를 더한 것이므로 두 숫자를 문자열로 합친 뒤 다시 숫자로 변환했다. 

 

3. 전화번호의 제곱근까지 for문 반복

i는 2부터 시작하고 전화번호의 제곱근까지 반복한다. 

 

4. 전화번호를 i로 나누었을 때의 나머지가 0일 경우 소수가 아닌 숫자

나머지가 0일 경우에는 소수가 아니므로 "No"를 출력한다.

 

5. 두 개의 전화번호 모두 소수라 판별되면 "Yes" 출력

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int tel = scanner.nextInt();
        int newT = Integer.parseInt(scanner.next() + tel);

        for (int i = 2; i < Math.sqrt(tel); i++) {
            if (tel % i == 0) {
                System.out.println("No");
                return;
            }
        }

        for (int i = 2; i < Math.sqrt(newT); i++) {
            if (newT % i == 0) {
                System.out.println("No");
                return;
            }
        }
        
        System.out.println("Yes");
    }
}

 

 

반응형

댓글