ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [λ°±μ€€] 17103 κ³¨λ“œλ°”ν νŒŒν‹°μ…˜ with Python
    PS 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에 ν•΄λ‹Ήν•˜λŠ” μˆ«μžκΉŒμ§€ μˆœνšŒν•˜λ©΄μ„œ κ³¨λ“œλ°”ν νŒŒν‹°μ…˜μ˜ 수λ₯Ό μ„Έμ–΄ 좜λ ₯ν•œλ‹€
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.