백준 JAVA11 1747번 : 소수&팰린드롬
Mention : 에라스토테네스의 채 + 팰린드롬 수 찾기
- 팰린드롬 수는 시작 인덱스와 마지막 인덱스를 각각 설정 후
- 인덱스의 값이 서로 일치한다면 시작 인덱스++, 마지막 인덱스–
- 반복해서 비교하면서 팰린드롬 수를 찾는다.
소수&팰린드롬
문제
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.
어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다.
출력
첫째 줄에 조건을 만족하는 수를 출력한다.
예제 입력 1
31
예제 출력 1
101
출처
슈도 코드
N(어떤 수)
A(N~1,000,000까지 배열)
Array(소수 리스트)
P_array(소수 && 팰린드만 수 리스트)
for(1,000,000만큼) {
A배열에 저장 1~ 1,000,000
}
for(1은 소수가 아님으로 2부터 시작 i=2; (1,000,000-N)의 제곱근 만큼 반복) {
if(A[i] == 0) 계속;
for(j = i의 배수; 1,000,000-N만큼) {
A[j] = 0;
}
if(A[i] < N) A[i] = 0;
}
소수에서 팰린드롬 수 구하기
for(1,000,000-N 만큼) {
if(0이아니면)
Array.add
}
for(Array사이즈만큼) {
while(Array[i]의 첫번째 인덱스 > 마지막 인덱스) {
if(array의 첫번째와 마지막인덱스 값이 같다면) {
시작 인덱스++
마지막 인덱스--
} else {
break;
}
}
}
출력 첫번째 수
break;
Leave a comment