728x90
[๋ฌธ์ ๋งํฌ] ๐ https://www.acmicpc.net/problem/2501
ํ์ด ๋ฐฉ๋ฒ
์ฝ์ ๊ตฌํ๊ธฐ
- N์ ์ฝ์๋ฅผ ๋ชจ๋ ์ฐพ๊ธฐ ์ํด 1๋ถํฐ N์ ์ ๊ณฑ๊ทผ ๊น์ง์ ์ i๋ฅผ ํ์ธํ๋ค.
- ๋ง์ฝ i๊ฐ N์ ์ฝ์๋ผ๋ฉด i ์ N / ๋ฅผ ์ฝ์ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค. ์ด๋, i์ N / ๊ฐ ๊ฐ์ง ์์ผ๋ฉด ์ค๋ณต์ ํผํ๊ธฐ ์ํด ๋ ๋ค ์ถ๊ฐํ๋ค.
- ์๋ฅผ ๋ค์ด N์ด 36์ผ ๋, ์ฝ์๋ก 6์ด ๋ ๋ฒ ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๋ ฌ
- ์ฝ์๋ฅผ ๋ชจ๋ ์ฐพ์ ํ, ์์ ์์๋ก ์ ๋ ฌํ์ฌ K๋ฒ์งธ ์์ ์ฝ์๋ฅผ ์ฐพ๋๋ค.
์ถ๋ ฅ
- ์ฝ์์ ๊ฐ์๊ฐ K ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด, ์ ๋ ฌ๋ ๋ฆฌ์คํธ์์ K ๋ฒ์งธ ์ฝ์๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ฝ์์ ๊ฐ์๊ฐ K ๋ณด๋ค ์ ๋ค๋ฉด 0์ ์ถ๋ ฅํ๋ค.
โ๏ธ ์ ๋ ฌ ๋ฐฉ๋ฒ
sorted(divisor)
- ๋ฆฌ์คํธ ํน์ ๋ฌธ์์ด ๋ฑ์ ๋ด์ฅํจ์๋ก ์ด์ฉํด ์ ๋ ฌํ ์ ์๋ค.
- sort(), sorted() ๋ด์ฅ ํจ์๊ฐ ์๊ณ , ๋ํดํธ ๊ฐ์ ์ค๋ฆ์ฐจ์์ด๋ค.
- ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ์ ํ ๋๋ ์ธ์๋ก reverse = True ๋ฅผ ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
Solution
N, K = map(int, input().split())
divisor = [] # ์ฝ์๋ฅผ ๋ด์ ๋ฆฌ์คํธ
for i in range(1, int(N**0.5) + 1):
if N % i == 0:
divisor.append(i)
if N // i != i:
divisor.append(N // i)
if len(divisor) >= K:
print(sorted(divisor)[K - 1])
else:
print(0)
๐ ์ฃผ์ํ ์
- ์ฐพ์์ผ ํ K ๋ฒ์งธ๋ณด๋ค ์ฝ์์ ๊ฐ์๊ฐ ์์ผ๋ฉด 0์ผ๋ก ์ถ๋ ฅํ๋ ์กฐ๊ฑด
- ์ฝ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์กฐ๊ฑด์ ๋๋ ๋ ์ฝ์ ๊ฐ์์ K๊ฐ ๊ฐ์ ๊ฒ๋ K๋ฒ์งธ ์๋ฅผ ๋ฝ์ ์ ์๋ค.
- ์ฝ์(๋ชซ๊ณผ ๋๋จธ์ง)๊ฐ ๊ฐ์ ์์ผ ๊ฒฝ์ฐ ํ๋๋ง ์ฝ์ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๊ธฐ
๐ฉ๐ป ํ๊ณ
์์ ์ฃผ์ํ ์ ๋ค์ ๋ด๊ฐ ๋ฏธ์ฒ ๊ณ ๋ คํ์ง ๋ชปํ๊ณ ํ์ด์ ํ๋ฒ์ ์ ์ถ์ด ์คํจํ๋ ์ด์ ๋ฅผ ๋ชจ์๋์ ๊ฒ์ด๋ค.
728x90
'๐งฉ Algorithm > [BOJ] Bronze' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ] 2460. ์ง๋ฅํ ๊ธฐ์ฐจ 2 (Python/Bronze 3) (0) | 2024.11.15 |
|---|---|
| [BOJ] 3460. ์ด์ง์ (Python/Bronze 3) (0) | 2024.11.15 |
| BOJ 10798๋ฒ : ์ธ๋ก์ฝ๊ธฐ (Python/์ํ/Bronze 1) (1) | 2024.10.15 |
| BOJ 1934๋ฒ : ์ต์๊ณต๋ฐฐ์ (Python/์ํ/Bronze 1) (0) | 2024.10.15 |
| BOJ 2775๋ฒ : ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ (Python/๊ตฌํ/Bronze 1) (0) | 2024.10.15 |