Algorithm Problem/Python
[python] ๋ฐฑ์ค - 1747. ์์&ํฐ๋ฆฐ๋๋กฌ
deo2kim
2020. 11. 4. 08:46
๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
-
G5 | ์๋ผํ ์คํ ๋ค์ค์ ์ฒด, ๋ฌธ์์ด
์์๋ฅผ ์ฐพ๊ณ , ๊ทธ๊ฒ ์์์ด๋ฉด ํฐ๋ฆฐ๋๋กฌ์ธ์ง ํ์ธํ๋ค.
ํฐ๋ฆฐ๋๋กฌ์ธ์ง ํ์ธํ๋ ๋ฒ์ ๊ฐ๋จํ๋ค.
๋ฌธ์๋ฅผ ๋ค์ง์ด์ ๊ฐ์ผ๋ฉด True
๋ธ๋ฃจํธํฌ์ค๋ก ์ฐพ์๋ ๋ฌธ์ ํด๊ฒฐ์ ๊ฐ๋ฅํ์ง๋ง ์๋ผํ ์ค๋ฅผ ์ฐ๋๊ฒ๊ณผ ์๊ฐ์ด 10๋ฐฐ ์ด์ ์ฐจ์ด๋๋ค.
- ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์จ์ ์ ํ ์ซ์๊น์ง ์์๋ค์ ๊ตฌํด๋๋๋ค.
- ๊ทธ ์์์ด๋ฉด์ ํฐ๋ฆฐ๋๋กฌ์ด๋ฉด ๊ฐ์ ๋ฐํํ๊ณ ๋
๐ป์์ค ์ฝ๋
def make_eratos(l: int) -> list:
eratos = [1] * (l + 1)
eratos[0], eratos[1] = 0, 0
for i in range(2, l):
if eratos[i]:
for j in range(i * 2, l, i):
eratos[j] = 0
return eratos
def is_palindrome(n: int) -> bool:
s = str(n)
if s == s[::-1]:
return True
return False
if __name__ == '__main__':
N = int(input())
# 100๋ง์ด ๋์ด๊ฐ๋ ์ฒซ ์์๋ 1003001
limit = 1003001
prime = make_eratos(limit)
for num in range(N, limit + 1):
# 1. ์์์ธ์ง ํ๋ณํ ํ
# 2. ํฐ๋ฆฐ๋๋กฌ์ธ์ง ํ๋ณํ๊ธฐ
if prime[num] and is_palindrome(num):
print(num)
break
else:
print(1003001)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/1747
1747๋ฒ: ์์&ํฐ๋ฆฐ๋๋กฌ
์ด๋ค ์์ ๊ทธ ์์ ์ซ์ ์์๋ฅผ ๋ค์ง์ ์๊ฐ ์ผ์นํ๋ ์๋ฅผ ํฐ๋ฆฐ๋๋กฌ์ด๋ผ ๋ถ๋ฅธ๋ค. ์๋ฅผ ๋ค์ด 79,197๊ณผ 324,423 ๋ฑ์ด ํฐ๋ฆฐ๋๋กฌ ์์ด๋ค. ์ด๋ค ์ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ก์ ๋, N๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ ,
www.acmicpc.net
๋ฐ์ํ