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();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[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 |