PS

[๋ฐฑ์ค€] 17103 ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜ with Python

ํ˜•์ค€_It's 2022. 7. 6. 16:55
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ BOJ 17103 ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜

๐Ÿ’ก ์กฐ๊ฑด

  1. ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก: 2๋ณด๋‹ค ํฐ ์ง์ˆ˜๋Š” ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  1. ์ง์ˆ˜ N์„ ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œํ˜„์„ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์ด๋ผ๊ณ  ํ•œ๋‹ค.
    ์ง์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž. ๋‘ ์†Œ์ˆ˜์˜ ์ˆœ์„œ๋งŒ ๋‹ค๋ฅธ ๊ฒƒ์€ ๊ฐ™์€ ํŒŒํ‹ฐ์…˜์ด๋‹ค.
  1. ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T (1 โ‰ค T โ‰ค 100)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
    ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์ •์ˆ˜ N์€ ์ง์ˆ˜์ด๊ณ , 2 < N โ‰ค 1,000,000์„ ๋งŒ์กฑํ•œ๋‹ค.
  1. ์ •์ˆ˜๋ก , ์†Œ์ˆ˜ํŒ๋ณ„, ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์œ ํ˜•์˜ ๋ฌธ์ œ

๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

from sys import stdin


def prime_list(n):
    sieve = [False, False] + [True] * n
    m = int(n ** 0.5)
    for i in range(2, m + 1):
        if sieve[i]:
            for j in range(i + i, n, i):
                sieve[j] = False

    return sieve


prime_nums = prime_list(10 ** 6)

for _ in range(int(stdin.readline())):
    cnt = 0
    num = int(stdin.readline())
    for i in range((num // 2) + 1):
        if prime_nums[i] and prime_nums[num - i]:
            cnt += 1

    print(cnt)

๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

์˜ˆ์ œ

5
6
8
10
12
100

์‹คํ–‰๊ฒฐ๊ณผ

1
1
2
1
6

โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

  1. ์†Œ์ˆ˜ํŒ๋ณ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ์†Œ์ˆ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์–ป๋Š”๋‹ค.
  1. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž num // 2 + 1์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์˜ ์ˆ˜๋ฅผ ์„ธ์–ด ์ถœ๋ ฅํ•œ๋‹ค
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€์ˆ˜0