[문제링크]

 

1747번: 소수&팰린드롬

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,

www.acmicpc.net

 

0. 팰린드롬 수인지 판단하기 : 앞/뒤 양쪽에서 동시에 출발해, 한칸씩 이동하며 수가 같은지 비교

  - 거의 O(1)에 가까운 복잡도를 가진다

 

1. 에라토스테네스의 체를 이용해 소수를 판별하면서, 소수에 대해서만 팰린드롬 여부를 판단한다

 

2. 입력 값 이상의 소수&팰린드롬이 발견되면 소수 판별을 종료하고, 출력한다

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
	public static void main(String[] args)throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = pint(br.readLine());
		int range=2000000;
		int ans=0;
		boolean[] notPrime = new boolean[range];
		for (int i = 2; i < range; i++) {
			if(!notPrime[i]) {
				for (int j = i; j < range; j+=i) {
					notPrime[j]=true;
				}
				if(isPalin(i)) {
					if(i>=N) {
						ans=i;
						break;
					}
				}
			}
		}
		System.out.println(ans);
		
	}
	static boolean isPalin(int n) {
		String str = Integer.toString(n);
		int s = 0, e = str.length()-1;
		
		while(s<=e) {
			if(str.charAt(s++)!=str.charAt(e--)) {
				return false;
			}
		}
		return true;
	}
	static int pint(String s) {
		return Integer.parseInt(s);
	}
	
}

결과 화면

'알고리즘 문제 풀이 > BOJ 골드' 카테고리의 다른 글

[백준] 2212 - 센서  (0) 2021.06.24
[백준] 16120 - PPAP  (0) 2021.06.24
[백준] 13904 - 과제  (0) 2021.06.24
[백준] 1342 - 행운의 문자열  (0) 2021.06.18
[백준] 9081 - 단어 맞추기  (0) 2021.06.18
[백준] 16234 - 인구 이동  (0) 2021.06.15
[백준] 14503 - 로봇 청소기  (0) 2021.06.15

+ Recent posts