[python] νλ‘κ·Έλλ¨Έμ€ - μ«μ λΈλ‘
π€λ¬Έμ ν΄κ²°
Lv4
ꡬκ°(begin ~ end)μ΄ μ ν΄μ Έ μμΌλ―λ‘ μ λΆλ₯Ό ꡬν νμλ μλ€.
μ νν ꡬκ°λ§ μλΌμ μ¬κΈ°μ μ΄λ€ μ«μκ° λ€μ΄κ°μΌ ν μ§λ₯Ό μμ보μ.
κ·μΉμ μ μ΄ν΄λ³΄λ©΄
I μ μ½μ μ€( 1 μ μΈ) κ°μ₯ μμ μλ‘ λλ λͺ«μ΄ ν΄λΉ μΈλ±μ€μ κ°μ΄ λλ€.
- 10μ 보면 2,5,10 μ€ 2λ‘ λλλ©΄ κ°μ 5μ΄λ€.
- 9μ κ²½μ° 3,9 μ€ 3μΌλ‘ λλλ©΄ κ°μ 3μ΄λ€.
- 7μ κ²½μ° μμμ΄λ―λ‘ 7λ‘ λλλ©΄ κ°μ 1μ΄λ€.
μμ λ°©λ²μΌλ‘ μ½λλ₯Ό μ§λ©΄ μ νλ ν μ€νΈλ μμ£Ό μ½κ² ν΅κ³Όνλ€.
π‘μ€μ
μ΄μ ν¨μ¨μ± ν μ€νΈκ° λ¬Έμ μΈλ° μκ°μ΄κ³Όλ μλκ³ μ€ν¨ λΌκ³ νλ€.μ΄μ λ μ 체 λλ‘μ κΈΈμ΄λ 10^9 μ΄μ§λ§ λΈλ‘μ μ«μλ 10^7 κΉμ§μ΄λ€.λͺ«μ΄ 10^7μ λμ΄κ°κ² λλ€λ©΄ μ¬μ€μ ν΄λΉλΈλ‘μ μ‘΄μ¬νμ§ μλλ€!!κ·Έλ¬λ―λ‘ λͺ«μ΄ 10^7μ λμ΄κ°λ μ«μλ μ€ν΅νκ³ κ·Έ λ³΄λ€ ν° μ«μλ‘ λλ μ 10^7λ³΄λ€ μμ λͺ«μ ꡬν΄μΌ νλ€.
π»μμ€ μ½λ
import math
def solution(begin, end):
answer = []
for i in range(begin, end + 1):
if i == 1: # i == 1μΈ κ²½μ°λ λ¬Έμ μμλ 0μΌλ‘ μ£Όμ΄μ§
answer.append(0)
else:
# μμμΈμ§ μλμ§ νλ³νκΈ° μν΄
# νλ³νκΈ° μν μ«μ i μ μ κ³±κ·Ό κΉμ§ νλμ© λλ 보κ³
# μμκ° μλλ©΄ λͺ«μ, μμμ΄λ©΄ 1μ λ£λλ€.
sqrt = int(math.sqrt(i))
for j in range(2, sqrt + 1):
mok = i // j
# !!!!μ€μ!!!! - μ νμ±μμλ ν΅κ³Όνλ ν¨μ¨μ±μμ ν΅κ³Όνμ§ λͺ»νλ μ΄μ κ° μμ
# μ 체 κΈΈμ΄λ 10**9μ΄μ§λ§ λΈλ‘μ 10**7 μ΄λ€
# κ·Έλ¬λ―λ‘ λͺ«μ΄ 10**7μ λμ΄κ°λ©΄ μλ¨!!
if mok > 10 ** 7:
continue
if i % j == 0:
answer.append(mok)
break
else:
answer.append(1)
return answer
πλ¬Έμ νμΈ
μΆμ²: νλ‘κ·Έλλ¨Έμ€
λ§ν¬: https://programmers.co.kr/learn/courses/30/lessons/12923
μ½λ©ν μ€νΈ μ°μ΅ - μ«μ λΈλ‘
1 10 [0, 1, 1, 2, 1, 3, 1, 4, 3, 5]
programmers.co.kr
λ¬Έμ μ€λͺ
κ·Έλ μμλ 0μΌλ‘ λ λλ‘μ μ«μ λΈλ‘μ μ€μΉνκΈ°λ‘ νμμ΅λλ€. μ«μ λΈλ‘μ κ·μΉμ λ€μκ³Ό κ°μ΅λλ€.
λΈλ‘μ λ²νΈκ° n μΌ λ, κ°μ₯ μ²μ λΈλ‘μ n * 2λ²μ§Έ μμΉμ μ€μΉν©λλ€. κ·Έλ€μμ n * 3, κ·Έλ€μμ n * 4, ...λ‘ μ§νν©λλ€.λ§μ½ κΈ°μ‘΄μ λΈλ‘μ΄ κΉλ €μλ μ리λΌλ©΄ κ·Έ λΈλ‘μλΉΌκ³ μλ‘μ΄ λΈλ‘μΌλ‘ μ§μ΄λ£μ΅λλ€.
μλ₯Ό λ€μ΄ 1λ² λΈλ‘μ 2,3,4,5, ... μΈ μμΉμ μ°μ μ€μΉν©λλ€. κ·Έλ€μ 2λ² λΈλ‘μ 4,6,8,10, ... μΈ μμΉμ μ€μΉνκ³ , 3λ² λΈλ‘μ 6,9,12... μΈ μμΉμ μ€μΉν©λλ€.
μ΄λ κ² 3λ² λΈλ‘κΉμ§ μ€μΉνκ³ λλ©΄ 첫 10κ°μ λΈλ‘μ 0, 1, 1, 2, 1, 3, 1, 2, 3, 2μ΄λ©λλ€.
κ·Έλ μλ κΈΈμ΄κ° 1,000,000,000μΈ λλ‘μ 1λ² λΈλ‘λΆν° μμνμ¬ 10,000,000λ² λΈλ‘κΉμ§ μμ κ·μΉμΌλ‘ λͺ¨λ λμμ΅λλ€.
κ·Έλ μμ μμ₯λμ νΉμ ꡬκ°μ μ΄λ€ λΈλ‘μ΄ κΉλ € μλμ§ μκ³ μΆμ΅λλ€.
ꡬκ°μ λνλ΄λ λ μ begin, end κ° λ§€κ°λ³μλ‘ μ£Όμ΄ μ§ λ, κ·Έ ꡬκ°μ κΉλ € μλ λΈλ‘μ μ«μ λ°°μ΄(리μ€νΈ)μ returnνλ solution ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ.
μ ν μ¬ν
- begin, end λ 1 μ΄μ 1,000,000,000μ΄νμ μμ°μ μ΄κ³ , beginλ νμ endλ³΄λ€ μμ΅λλ€.
- end - begin μ κ°μ νμ 10,000μ λμ§ μμ΅λλ€.
μ μΆλ ₯ μ
begin | end | result |
1 | 10 | [0, 1, 1, 2, 1, 3, 1, 4, 3, 5] |
μ μΆλ ₯ μ μ€λͺ
μ
μΆλ ₯ μ #1
λ€μκ³Ό κ°μ΄ λΈλμ΄ κΉλ¦¬κ² λ©λλ€.
β» κ³΅μ§ - 2019λ 4μ 07μΌ ν μ€νΈμΌμ΄μ€κ° λ³κ²½λμμ΅λλ€.