새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[백준] 1747 소수&팰린드롬

by 언호 2021. 12. 29.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

소수를 구해야 하므로 '에라토스테네스의 체'를 이용하여 소수 판별

팰린드롬인 수를 구하기 위해 10으로 나눈 나머지 및 몫을 이용해 숫자 역으로 배치하여 판별

2) 알고리즘

  • 에라토스테네스의 체

3) 풀이 코드

사용 언어 - Python

import sys


N = int(sys.stdin.readline())               # 특정 숫자
prime_num = [1] * 1003002                   # 정답이 나올 수 있는 최대 숫자까지만 리스트 생성
prime_num[0] = prime_num[1] = 0             # 0, 1은 소수가 아니므로

for i in range(2, int(1003002**0.5) + 1):   # 에라토스테네스의 체
    if prime_num[i]:
        mul = 2
        while mul * i < 1003002:
            prime_num[i*mul] = 0
            mul += 1

idx = 0                                     # 특정 보다 얼마나 큰지 결정할 변수
while True:
    reverse_num = 0                         # 앞뒤가 바뀐 숫자를 저장할 변수
    num = N + idx                           # 특정 수보다 idx 크기만큼 큰 수

    if prime_num[num]:                      # 지금 숫자가 소수라면
        while num:                          # 숫자를 거꾸로 만들어서 저장
            reverse_num = (reverse_num * 10) + (num % 10)
            num //= 10

        if reverse_num == N + idx:          # 숫자를 거꾸로 해도 같다면
            print(reverse_num)              # 출력 및 종료
            break

    idx += 1

📝 결과 및 학습한 내용

1) 어려웠던 내용

특별히 없습니다

2) 새롭게 학습한 내용

특별히 없습니다


🔗 문제 링크

- https://www.acmicpc.net/problem/1747

 

1747번: 소수&팰린드롬

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

www.acmicpc.net

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

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

[백준] 10819 차이를 최대로  (0) 2021.12.31
[백준] 7662 이중 우선순위 큐  (0) 2021.12.30
[백준] 6497 전력난  (0) 2021.12.28
[프로그래머스] 하노이의 탑  (0) 2021.12.27
[백준] 2636 치즈  (0) 2021.12.26

댓글