728x90
문제
접근 방법
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();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 16970번 : 정수 좌표의 개수 (0) | 2024.04.21 |
---|---|
[Java] 백준 2247번 : 실질적 약수 (0) | 2024.04.19 |
[Java] 백준 14232번 : 보석 도둑 (0) | 2024.04.18 |
[Java] 백준 1874번 : 스택 수열 (0) | 2024.04.16 |
[Java] 백준 14718번 : 용감한 용사 진수 (0) | 2024.04.16 |