๐ฅ Bronze3
https://www.acmicpc.net/problem/2061
โ 1์ฐจ ํ์ด
import math
import sys
from itertools import permutations
# ๋ ์์ ๊ตฌํ๊ธฐ
# ๋ ์์๊ฐ l ์ด์์ธ์ง ํ์ธ
# O - good
# X - ๋ ์์ ์์ ์ถ๋ ฅ
input = sys.stdin.readline
k, l = map(int, input().rstrip().split())
for divisor in range(l,k):
# ๋ ์์ ์ฐพ๊ธฐ
if k%divisor==0:
num2=k//divisor
num1=divisor
if num2<l or num1<l:
print('BAD',min(num1,num2))
break
else:
print('GOOD')
break
์ฒ์์ ์๊ฐํ๋ ๋ฐฉ์์ ์ฃผ์ด์ง k=143๋ฅผ ์์ธ์๋ถํด ํ์๋ ์ถ์ถ๋๋ ๋ ๊ฐ์ด ๋ชจ๋ l์ด์์ด๋ผ๋ฉด GOOD, ์๋๋ผ๋ฉด, BAD๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ l๋ถํฐ ๋๋ ์ง๋์๋ฅผ ์ฐพ์, ์์ธ์๋ถํด๊ฐ ๊ฐ๋ฅํ๋ฉด ๋๋ ๊ฐ divisor์ ๋ชซ์ด ์ฐพ๊ณ ์ํ๋ ๋ ์์๊ฐ ๋ ๊ฒ์ด๊ณ , ๋ ์๊ฐ ์ค ํ๋๋ผ๋ l๊ฐ๋ณด๋ค ์๋ค๋ฉด BAD์ num1(๋ ์์๊ฐ)์ ์ถ๋ ฅํ๋ ๋ฐฉ์์ผ๋ก ํ์์ง๋ง, ์ญ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ง์ด๋งํ ๋ฒ์์ด๊ธฐ ๋๋ฌธ์ 1์ฉ ์ฆ๊ฐํ๋ฉฐ ์ฐพ๋ ์ด ๋ฐฉ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ์๋ค...
โ ์ ๋ต ํ์ด
import sys
# ์์
# l๋ณด๋ค ์์ ๊ฐ์ผ๋ก ๋๋ ์ง๋ฉด, bad
input = sys.stdin.readline
k, l = map(int, input().rstrip().split())
for divisor in range(2,l):
if k%divisor==0:
print('BAD',divisor)
break
else:
print('GOOD')
๋ฉ๋ชจ๋ฆฌ | ์๊ฐ |
31120KB | 280ms |
l์ด์์ ์์ธ์๋ถํด๋ฅผ ์ฐพ์์, ๋ ๊ฐ ๋ชจ๋ l์ด์์ธ์ง ํ์ธํ๋๊ฒ์ด ์๋ ๋ฐ๋๋ก ์๊ฐํด์
์ฐพ๊ณ ์ํ๋ ๋์๋ ์ด์ฐจํผ ์์์ด๊ธฐ ๋๋ฌธ์, 2๋ถํฐ l๊น์ง ๋๋ ์ง๋ค๋ฉด ์ข์ ์ํธ์ ์กฐ๊ฑด์ด ์๋ฐฐ๋๋๊ฒ์ด๋ค.
K๋ 10^100, L์ 10^6์ด๊ธฐ ๋๋ฌธ์ ๋ ์์์๋ก ์ธ์๋ถํด๊ฐ ๊ฐ๋ฅํ์ง๋ฅผ ํ์ธํ๋๊ฒ์ด ํจ์ฌ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค!
โ ๋ค๋ฅธ ํ์ด
def find_prime_numbers(n):
isPrimes=[True]*(n+1)
p=2 #์์ ๊ฒ์ฌ ์์ํ ์ซ์
while(p*p<=n):
if isPrimes[p]==True:
for i in range(p*p,n+1,p): #p์ ๋ฐฐ์๋ค์ false๋ก ์ค์ (p์ ๊ณฑ๋ถํฐ n๊น์ง)
isPrimes=False
p+=1 #๋ค์์๋ก ์ด๋
prime_numbers = []
# 2-n๊น์ง ์์์ธ์๋ฅผ prime_numbers ๋ฆฌ์คํธ์ ์ ์ฅ
for p in range(2,n+1):
if isPrimes[p]:
prime_numbers.append(p)
return prime_numbers
def check_good_password(K, L):
primes = find_prime_numbers(L - 1)
for prime in primes:
if K % prime == 0:
return f"BAD {prime}"
return "GOOD"
K, L = map(int, input().strip().split())
print(check_good_password(K, L))
์ฒ์์ ํ์๋ ํ์ด๊ฐ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ณด๊ณ , for๋ฌธ์ผ๋ก 1์ฉ ์ฆ๊ฐ์ํค๋ฉด์, ๋ฌด์์ ์ฐพ๋๊ฒ์ด ์๋๋ผ ์ด์ฐจํผ ์์์ด๋ฏ๋ก ์์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ ๊ทธ์ค์์ ์ฐพ์์ผ๋๋ ์๊ฐ์ ํ๋๋ฐ ์ด๋ด๋ ์๋ผํ ์ค๋ค์ค์ฒด๋ฅผ ์ฌ์ฉํ๋๋ฐ... ์์ ์ ์ด๋ ค์์ ๋๊ผ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ ํจ์คํ๋๋ฐ ๋ค๋ฅธ ํ์์ด ์ด ์ ์๋๋ก ํ์ด๋ฅผ ํ๊ธธ๋ ๊ฐ์ ธ์๋ณด์๋ค!
์๋ผํ ์ค๋ค์ค ์ฒด
์์๋ฅผ ํ๋ณํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ํน์ ํ ์ซ์์ ์ ๊ณฑ๊ทผ๊น์ง๋ง ์ฝ์์ ์ฌ๋ถ๋ฅผ ๊ฒ์ฆํ๋ฉด O(N^1/2)์ ์๊ฐ๋ณต์ก๋๋ก ๋น ๋ฅด๊ฒ ๊ตฌํ ์ ์๋ค๊ณ ํ๋ค.
1. 2๋ถํฐ ์์ํด์ ํน์ ์์ ๋ฐฐ์์ ํด๋นํ๋ ๋ชจ๋ ์๋ฅผ ์ง์ด๋ค.
2. 2๋ถํฐ ์์ํด ๋จ์์๋ ๋ชจ๋ ์๋ฅผ ์ถ๋ ฅํ๋ค.
[Algorithm] ์๋ผํ ์คํ ๋ค์ค์ ์ฒด
์๋ผํ ์คํ ๋ค์ค์ ์ฒด ๋? ์์๋ฅผ ํ๋ณํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์์๋ค์ ๋๋์ผ๋ก ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋จ์ผ ์ซ์ ์์ ์ฌ๋ถ ํ์ธ ์ด๋ค ์์ ์์์ ์ฌ๋ถ๋ฅผ ํ์ธ ํ ๋๋, ํน์ ํ ์ซ์
velog.io
'๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค-Python] ํน : 1063๋ฒ (1) | 2024.06.12 |
---|---|
[๋ฐฑ์ค-Python] ๋จ์ด ๋๋๊ธฐ : 1251๋ฒ (0) | 2024.06.12 |
[๋ฐฑ์ค-Python] ํ์๋จธ์ : 1440๋ฒ (0) | 2024.06.12 |
[๋ฐฑ์ค-Python] ํ์ผ ํฉ์น๊ธฐ 3 : 13975๋ฒ (1) | 2024.06.11 |
[๋ฐฑ์ค-Python] ์จ๋ฐ๊ผญ์ง : 1697๋ฒ (0) | 2024.06.11 |