Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 1747. ์†Œ์ˆ˜&ํŒฐ๋ฆฐ๋“œ๋กฌ

deo2kim 2020. 11. 4. 08:46
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • G5 | ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด, ๋ฌธ์ž์—ด

์†Œ์ˆ˜๋ฅผ ์ฐพ๊ณ , ๊ทธ๊ฒŒ ์†Œ์ˆ˜์ด๋ฉด ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.

๋ฌธ์ž๋ฅผ ๋’ค์ง‘์–ด์„œ ๊ฐ™์œผ๋ฉด True

๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ ์ฐพ์•„๋„ ๋ฌธ์ œํ•ด๊ฒฐ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์—๋ผํ† ์Šค๋ฅผ ์“ฐ๋Š”๊ฒƒ๊ณผ ์‹œ๊ฐ„์ด 10๋ฐฐ ์ด์ƒ ์ฐจ์ด๋‚œ๋‹ค.

 

  1. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์จ์„œ ์ œํ•œ ์ˆซ์ž๊นŒ์ง€ ์†Œ์ˆ˜๋“ค์„ ๊ตฌํ•ด๋†“๋Š”๋‹ค.
  2. ๊ทธ ์†Œ์ˆ˜์ด๋ฉด์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ฉด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

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

๋ฐ˜์‘ํ˜•