๐ŸŒฑ → ๐ŸŒณ

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

Algorithms

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

BAY 2022. 7. 30. 14:26
728x90

https://www.acmicpc.net/problem/9020

 

9020๋ฒˆ: ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก

1๋ณด๋‹ค ํฐ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ  1๊ณผ ์ž๊ธฐ ์ž์‹ ์„ ์ œ์™ธํ•œ ์•ฝ์ˆ˜๊ฐ€ ์—†๋Š” ์ž์—ฐ์ˆ˜๋ฅผ ์†Œ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 5๋Š” 1๊ณผ 5๋ฅผ ์ œ์™ธํ•œ ์•ฝ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์ˆ˜์ด๋‹ค. ํ•˜์ง€๋งŒ, 6์€ 6 = 2 × 3 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์ˆ˜๊ฐ€ ์•„

www.acmicpc.net

 

์ •๋‹ต ์ฝ”๋“œ:

def is_prime(n):
  if n == 1:
    return False
  for j in range(2, int(n**0.5)+1):
    if n % j == 0:
      return False
  return True
  
t = int(input())
for i in range(t):
  num = int(input())
  a,b = num//2, num//2
  while a > 0:
    if is_prime(a) and is_prime(b):
      print(a, b)
      break
    else:
      a -=1
      b +=1

 

์šฐ์„  n์ด ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๋Š” is_prime() ํ•จ์ˆ˜ ์ƒ์„ฑ 

 

n์ด ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” n๋ฏธ๋งŒ์˜ ์ˆ˜๋กœ n์ด ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ 

์—๋ผ์Šคํ† ํ…Œ๋„ค์Šค์˜ ์ฒด ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ, ๋‚˜๋Š” ์ „์ž๋ฅผ ํƒํ–ˆ๋‹ค

 

๊ฐ€์žฅ ์ฐจ์ด๊ฐ€ ์ ์€ ๋‘ ์†Œ์ˆ˜๋ฅผ ํ•ฉํ•ด์„œ ํ•ด๋‹น ์ง์ˆ˜๊ฐ€ ๋˜๋„๋ก ํ•˜๋ ค๋ฉด

์ž…๋ ฅ ๋ฐ›์€ num์„ ๋ฐ˜์œผ๋กœ ์ชผ๊ฐœ์„œ ํ•œ ๊ฐœ๋Š” +1์”ฉ, ํ•œ ๊ฐœ๋Š” -1์”ฉ ํ•ด๋ณด๋ฉด์„œ ๋‘ ์ˆ˜๊ฐ€ ๋ชจ๋‘ ์†Œ์‹œ์ธ์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

728x90