λ¬Έμ
μλΌν μ€ν λ€μ€μ 체λ Nλ³΄λ€ μκ±°λ κ°μ λͺ¨λ μμλ₯Ό μ°Ύλ μ λͺ ν μκ³ λ¦¬μ¦μ΄λ€.
μ΄ μκ³ λ¦¬μ¦μ λ€μκ³Ό κ°λ€.
- 2λΆν° NκΉμ§ λͺ¨λ μ μλ₯Ό μ λλ€.
- μμ§ μ§μ°μ§ μμ μ μ€ κ°μ₯ μμ μλ₯Ό μ°Ύλλ€. μ΄κ²μ PλΌκ³ νκ³ , μ΄ μλ μμμ΄λ€.
- Pλ₯Ό μ§μ°κ³ , μμ§ μ§μ°μ§ μμ Pμ λ°°μλ₯Ό ν¬κΈ° μμλλ‘ μ§μ΄λ€.
- μμ§ λͺ¨λ μλ₯Ό μ§μ°μ§ μμλ€λ©΄, λ€μ 2λ² λ¨κ³λ‘ κ°λ€.
N, Kκ° μ£Όμ΄μ‘μ λ, Kλ²μ§Έ μ§μ°λ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ μΆλ ₯ μμ
νμ΄
μλΌν μ€ν λ€μ€μ 체λ κ΅μ₯ν μ λͺ ν μ νμμλ λΆκ΅¬νκ³ λ³Ό λλ§λ€ μλ‘μ΄ λλμ΄λ€. νμ΄λ₯Ό μμ ν μΈμλλκ° ν΄μΌκ² λ€.
μλλ λ¬Έμ λ₯Ό λ³΄κ³ λ΄ λ¨Έλ¦Ώμμ λ μ¬λλ μκ°λ€μ΄λ€.
βΎ μ§μμ§ μ«μκ° λͺ λ²μ§ΈμΈμ§ μΈκΈ° μν λ³μκ° νμν¨ → cnt λ³μ μ μ
βΎ cntλ₯Ό μ μνλ€λ©΄, λ³μλ₯Ό κ°±μ νλ μμ μ μ€μ ν΄μΌ ν¨
λ³μ κ°±μ μμ μ 6, 12μ²λΌ μ¬λ¬ μμ 곡배μλ₯Ό μ²λ¦¬νκΈ° μν΄ νμνλ€. N=7μ΄λΌλ©΄ [2, 3, 4, 5, 6, 7]κ³Ό κ°μ μ μ 리μ€νΈκ° λ§λ€μ΄μ§ κ²μ΄κ³ , μ§μμ§λ μ«μμ μμλ 2 → 4 → 6 → 3 → 5 → 7μ΄ λλ€. μ΄ λ νΉμ 쑰건 μμ΄ cntμ κ³μ +1μ νλ€ λ³΄λ©΄ 6μ μ΄λ―Έ μ§μμ‘λλ°λ 3μ λ°°μμμ 걸리기 λλ¬Έμ cnt κ°μ΄ μ΄μνκ² μ μ₯λμ΄ λ²λ¦°λ€.
μ΄λ° κ²½μ°λ₯Ό λ°©μ§νκΈ° μν΄ remove_checkλΌλ 리μ€νΈλ₯Ό μ¬μ©νλ€.
remove_check 리μ€νΈμ μν μ μ΄λ―Έ μ§μμ§ μ«μλΌλ©΄ ν΄λΉ μΈλ±μ€ κ°μ 1λ‘ λ°κΎΈλ κ²μΌλ‘, remove_check κ°μ΄ 1μ΄ μλ λλ§(=μμ§ μ μ§μμ‘λ€λ λ») cnt κ°μ 1μ© μ¦κ°μν¨λ€.
cnt κ°μ΄ Kλ κ°μμ§λ μμ μ΄ μ€λ©΄ ν΄λΉ κ°μ λ°λ‘ μΆλ ₯ν ν λͺ¨λ forλ¬Έμ νμΆνλ©΄ ν΄κ²°!
..μ΄κΈ΄ νλ° λκ° λ΄μ©μ΄ κΉλνκ² μ 리λμ§ μμ λ―ν μ΄ λλ πΆ
# Silver 4
import sys
N, K = map(int, sys.stdin.readline().split())
integer_list = [num for num in range(2, N+1)]
remove_check = [0]*(N+1)
remove_check[0] = remove_check[1] = 1
cnt = 0
for i in range(2, N+1):
for j in range(i, N+1, i):
if remove_check[j] != 1:
remove_check[j] = 1
cnt += 1
if cnt == K and remove_check[j] == 1:
print(j)
exit()
κ°μ μΆλ ₯νκΈ° μ μ remove_check[j] κ°μ΄ 1μΈμ§ νμΈνλ 쑰건문μ μ§μ°λκΉ μκ°μ΄ μ’ λ κ±Έλ Έλλ° μμ§ μ΄μ λ νμ νμ§ λͺ»νμ
'Problem Solving > BOJ & Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] 2217λ²: λ‘ν (1) | 2024.02.25 |
---|---|
[BOJ] 14501λ²: ν΄μ¬ (1) | 2024.02.05 |
[BOJ] 15686λ²: μΉν¨ λ°°λ¬ (0) | 2024.01.16 |
[BOJ] 1789λ²: μλ€μ ν© (1) | 2024.01.02 |
[BOJ] 1475λ²: λ°© λ²νΈ (1) | 2023.12.03 |