๐Ÿ ํŒŒ์ด์ฌ ์ƒ์ดˆ์งœ

[BOJ][Python] ๋ฐฑ์ค€ 9020๋ฒˆ: ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก

์„ ๋‹ฌ 2024. 10. 22. 01:09
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

1๋ณด๋‹ค ํฐ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ  1๊ณผ ์ž๊ธฐ ์ž์‹ ์„ ์ œ์™ธํ•œ ์•ฝ์ˆ˜๊ฐ€ ์—†๋Š” ์ž์—ฐ์ˆ˜๋ฅผ ์†Œ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 5๋Š” 1๊ณผ 5๋ฅผ ์ œ์™ธํ•œ ์•ฝ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์ˆ˜์ด๋‹ค. ํ•˜์ง€๋งŒ, 6์€ 6 = 2 × 3 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.
๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก์€ ์œ ๋ช…ํ•œ ์ •์ˆ˜๋ก ์˜ ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ๋กœ, 2๋ณด๋‹ค ํฐ ๋ชจ๋“  ์ง์ˆ˜๋Š” ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ˆ˜๋ฅผ ๊ณจ๋“œ๋ฐ”ํ ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๋˜, ์ง์ˆ˜๋ฅผ ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œํ˜„์„ ๊ทธ ์ˆ˜์˜ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์ด๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7์ด๋‹ค. 10000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ชจ๋“  ์ง์ˆ˜ n์— ๋Œ€ํ•œ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์€ ์กด์žฌํ•œ๋‹ค.
2๋ณด๋‹ค ํฐ ์ง์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n์˜ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋งŒ์•ฝ ๊ฐ€๋Šฅํ•œ n์˜ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์—๋Š” ๋‘ ์†Œ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  ์ง์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ ์ฃผ์–ด์ง„ n์˜ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ˆ˜๋Š” ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ ๋จผ์ € ์ถœ๋ ฅํ•˜๋ฉฐ, ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

ํ’€์ด

INF = 10000

# ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด
prime = [1 for i in range(INF+1)]
prime[0] = prime[1] = 0
for i in range(2, INF+1):
    if not prime[i]:
        continue
    for j in range(i*i, INF+1, i):
        prime[j] = 0

# ํ…Œ์ŠคํŠธ์ผ€์ด์Šค
t = int(input())
for _ in range(t):
    n = int(input())
    
    a = 0
    for i in range(n//2 + 1):
        if prime[i] and prime[n-i]:
            a = i
    print(f"{a} {n-a}")
๋ฐ˜์‘ํ˜•