[νλ‘κ·Έλλ¨Έμ€ | Python] μμ°
π λ¬Έμ μ 보
- λμ΄λ : Level 1
- λ¬Έμ λ§ν¬ : https://programmers.co.kr/learn/courses/30/lessons/12982#
μ½λ©ν μ€νΈ μ°μ΅ - μμ°
Sμ¬μμλ κ° λΆμμ νμν λ¬Όνμ μ§μν΄ μ£ΌκΈ° μν΄ λΆμλ³λ‘ λ¬Όνμ ꡬ맀νλλ° νμν κΈμ‘μ μ‘°μ¬νμ΅λλ€. κ·Έλ¬λ, μ 체 μμ°μ΄ μ ν΄μ Έ μκΈ° λλ¬Έμ λͺ¨λ λΆμμ λ¬Όνμ κ΅¬λ§€ν΄ μ€ μλ
programmers.co.kr
π λ¬Έμ μ€λͺ
λ¬Έμ μ€λͺ
Sμ¬μμλ κ° λΆμμ νμν λ¬Όνμ μ§μν΄ μ£ΌκΈ° μν΄ λΆμλ³λ‘ λ¬Όνμ ꡬ맀νλλ° νμν κΈμ‘μ μ‘°μ¬νμ΅λλ€. κ·Έλ¬λ, μ 체 μμ°μ΄ μ ν΄μ Έ μκΈ° λλ¬Έμ λͺ¨λ λΆμμ λ¬Όνμ κ΅¬λ§€ν΄ μ€ μλ μμ΅λλ€. κ·Έλμ μ΅λν λ§μ λΆμμ λ¬Όνμ κ΅¬λ§€ν΄ μ€ μ μλλ‘ νλ €κ³ ν©λλ€.
λ¬Όνμ κ΅¬λ§€ν΄ μ€ λλ κ° λΆμκ° μ μ²ν κΈμ‘λ§νΌμ λͺ¨λ μ§μν΄ μ€μΌ ν©λλ€. μλ₯Ό λ€μ΄ 1,000μμ μ μ²ν λΆμμλ μ νν 1,000μμ μ§μν΄μΌ νλ©°, 1,000μλ³΄λ€ μ μ κΈμ‘μ μ§μν΄ μ€ μλ μμ΅λλ€.
λΆμλ³λ‘ μ μ²ν κΈμ‘μ΄ λ€μ΄μλ λ°°μ΄ dμ μμ° budgetμ΄ λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ΅λ λͺ κ°μ λΆμμ λ¬Όνμ μ§μν μ μλμ§ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ ν μ¬ν
- dλ λΆμλ³λ‘ μ μ²ν κΈμ‘μ΄ λ€μ΄μλ λ°°μ΄μ΄λ©°, κΈΈμ΄(μ 체 λΆμμ κ°μ)λ 1 μ΄μ 100 μ΄νμ λλ€.
- dμ κ° μμλ λΆμλ³λ‘ μ μ²ν κΈμ‘μ λνλ΄λ©°, λΆμλ³ μ μ² κΈμ‘μ 1 μ΄μ 100,000 μ΄νμ μμ°μμ λλ€.
- budgetμ μμ°μ λνλ΄λ©°, 1 μ΄μ 10,000,000 μ΄νμ μμ°μμ λλ€.
μ μΆλ ₯ μ
d | budget | result |
[1,3,2,5,4] | 9 | 3 |
[2,2,3,3] | 10 | 4 |
μ μΆλ ₯ μ μ€λͺ
μ
μΆλ ₯ μ #1
κ° λΆμμμ [1μ, 3μ, 2μ, 5μ, 4μ]λ§νΌμ κΈμ‘μ μ μ²νμ΅λλ€. λ§μ½μ, 1μ, 2μ, 4μμ μ μ²ν λΆμμ λ¬Όνμ ꡬ맀ν΄μ£Όλ©΄ μμ° 9μμμ 7μμ΄ μλΉλμ΄ 2μμ΄ λ¨μ΅λλ€. νμ μ νν μ μ²ν κΈμ‘λ§νΌ μ§μν΄ μ€μΌ νλ―λ‘ λ¨μ 2μμΌλ‘ λλ¨Έμ§ λΆμλ₯Ό μ§μν΄ μ£Όμ§ μμ΅λλ€. μ λ°©λ² μΈμ 3κ° λΆμλ₯Ό μ§μν΄ μ€ λ°©λ²λ€μ λ€μκ³Ό κ°μ΅λλ€.
- 1μ, 2μ, 3μμ μ μ²ν λΆμμ λ¬Όνμ ꡬ맀ν΄μ£Όλ €λ©΄ 6μμ΄ νμν©λλ€.
- 1μ, 2μ, 5μμ μ μ²ν λΆμμ λ¬Όνμ ꡬ맀ν΄μ£Όλ €λ©΄ 8μμ΄ νμν©λλ€.
- 1μ, 3μ, 4μμ μ μ²ν λΆμμ λ¬Όνμ ꡬ맀ν΄μ£Όλ €λ©΄ 8μμ΄ νμν©λλ€.
- 1μ, 3μ, 5μμ μ μ²ν λΆμμ λ¬Όνμ ꡬ맀ν΄μ£Όλ €λ©΄ 9μμ΄ νμν©λλ€.
3κ° λΆμλ³΄λ€ λ λ§μ λΆμμ λ¬Όνμ κ΅¬λ§€ν΄ μ€ μλ μμΌλ―λ‘ μ΅λ 3κ° λΆμμ λ¬Όνμ κ΅¬λ§€ν΄ μ€ μ μμ΅λλ€.
μ
μΆλ ₯ μ #2
λͺ¨λ λΆμμ λ¬Όνμ ꡬ맀ν΄μ£Όλ©΄ 10μμ΄ λ©λλ€. λ°λΌμ μ΅λ 4κ° λΆμμ λ¬Όνμ κ΅¬λ§€ν΄ μ€ μ μμ΅λλ€.
π λ¬Έμ νμ΄
μλ 1. μμ νμ - μ€ν¨ (μκ°μ΄κ³Ό)
import itertools
def solution(d, budget):
tmp = []
for i in range(len(d)+1):
coms = itertools.combinations(d, i)
for c in coms:
if sum(c) <= budget:
tmp.append(len(c))
return max(tmp)
μμ νμμΌλ‘ νμ΄λ³΄λ € νμΌλ, ν μ€νΈμΌμ΄μ€ 7λΆν°λ μκ°μ΄κ³Όκ° λμλ€. λ°λΌμ λͺ¨λ κ²½μ°μ μλ₯Ό λ°μ§κΈ°λ³΄λ€λ λμ± ν¨μ¨μ μΈ νμ΄λ₯Ό μ°Ύμλ³΄κ³ μ νλ€.
λ°©λ² 1. μ΅λκ° λΉΌλ©΄μ λνκΈ°
μ§λ¬ΈνκΈ° κ²μνμ ν΅ν΄ ννΈλ₯Ό μ»μλλ°, μ리λ λ무λ κ°λ¨νκ²λ 'κ°μ₯ μμ μλΆν° λν΄μΌ κ°μ₯ λ§μ λΆμμκ² μ§μμ ν΄μ€ μ μλ€'μλ€.
κ°μ μ리λ‘, λ§μ½ λΆμλ³ μ μ² κΈμ‘μ ν©μ΄ μμ°μ μ΄κ³Όνλ€λ©΄ μ΅λκ°μ μ μΈνκ³ λ€μ νμΈν΄λ³΄λ λ°©μμΌλ‘ μ§ννλ€.
def solution(d, budget):
while True:
if sum(d) <= budget:
return len(d)
else:
d.remove(max(d))
λ°©λ² 2. .sort() + pop() νμ©νκΈ°
λμ κ°μ νμ΄μ΄μ§λ§ μ‘°κΈ λ λ¨μνκ² νΌ νμ΄λ₯Ό μ°Ύμλ€. μ¬μ€ κ±°μ λΉμ·νμ§λ§ ꡬννκΈ° μν΄ μ¬μ©ν ν¨μκ° λ€λ₯΄λ€.
def solution(d, budget):
d.sort()
while budget < sum(d):
d.pop()
return len(d)
π‘ What I learned
μκ°λ³΅μ‘λλ₯Ό μκ°νμ§ μκ³ κ·Έλ₯ 무μμ μμ νμμ΄λ, λ΄κ° μλ λ°©μμΌλ‘ νλ €λ κ²½ν₯μ΄ μλ€. μνμ μΌλ‘ μ κ·Όνμ¬ λ¬Έμ λ₯Ό ν¨μ¬ κ°λ¨ν ν μ€ μλ νλ ¨μ΄ νμν λ― νλ€.
'Problem Solving > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€ | Python] λλμ΄ λ¨μ΄μ§λ μ«μ λ°°μ΄ (0) | 2022.07.05 |
---|---|
[νλ‘κ·Έλλ¨Έμ€ | Python] λ¬Έμμ΄ λ΄ λ§μλλ‘ μ λ ¬νκΈ° (0) | 2022.07.05 |
[νλ‘κ·Έλλ¨Έμ€ | Python] λ€νΈμν¬ (0) | 2022.07.02 |
[νλ‘κ·Έλλ¨Έμ€ | Python] μλ μ«μ λνκΈ° (0) | 2022.07.01 |
[νλ‘κ·Έλλ¨Έμ€ | Python] μμ λνκΈ° (0) | 2022.07.01 |