응애개발자
article thumbnail
728x90

문제

 

10859번: 뒤집어진 소수

어제 자다가 알람 시계를 떨어뜨렸는지, 08:15분이 51:80분이 되어 있었다. 그때 나는 디지털로 표시된 어떤 숫자는 180도 뒤집혔을 때도 숫자가 될 수 있다는 걸 깨달았다. 소수 18115211이 디지털로

www.acmicpc.net


접근 방법

1. 문제 그대로 N값에 대해서 소수판별을 진행한다.

2. 들어온값에 3,4,7이 있으면 숫자가 아니다.

3. 뒤집어보고 소수인지 체크해본다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    private static StringBuilder sb;
    private static BufferedReader br;
    private static StringTokenizer st;
    private static Long N;

    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        N = Long.parseLong(br.readLine());
    }
    //소수 판별
    public static boolean isPrime(Long input){
        if(input == 1) return false;

        for(long i = 2 ; i * i < N+1 ; i++){
            if(input % i == 0) return false;
        }

        return true;
    }
    //3,4,7포함되어 있으면 숫자가 아님
    public static boolean checkNum(Long input){
        String line = String.valueOf(input);

        if(line.contains("3") || line.contains("4") || line.contains("7")) return false;

        return true;
    }
    //숫자 뒤집기
    public static Long reverseNum(Long input) {
        long result = 0;
        while (input>0){
            if(input % 10 == 6){
                result = result*10 + 9;
            }else if(input % 10 == 9){
                result = result*10 + 6;
            }else{
                result = result * 10 + input % 10;
            }
            input /=10;
        }
        return result;
    }


    //실행
    public static void process() {
        //소수인지 아닌지
        if(!isPrime(N)){
            System.out.println("no");
        }else{
            //숫자인지 아닌지
            if(!checkNum(N)){
                System.out.println("no");
            }else{
                //숫자 뒤집고, 소수판별
                Long reverseNum = reverseNum(N);
                if(!isPrime(reverseNum)) System.out.println("no");
                else System.out.println("yes");
            }
        }
    }

    public static void main(String[] args) throws Exception {
        input();
        process();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!