728x90
λ°μν
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
"""
μμ°μ n κ°λ‘ μ΄λ£¨μ΄μ§ μ€λ³΅ μ§ν©(multi set, νΈμμ μ΄νμλ "μ§ν©"μΌλ‘ ν΅μΉ) μ€μ
λ€μ λ 쑰건μ λ§μ‘±νλ μ§ν©μ μ΅κ³ μ μ§ν©μ΄λΌκ³ ν©λλ€.
1. κ° μμμ ν©μ΄ Sκ° λλ μμ μ§ν©
2. μ 쑰건μ λ§μ‘±νλ©΄μ κ° μμμ κ³± μ΄ μ΅λκ° λλ μ§ν©
μλ₯Ό λ€μ΄μ μμ°μ 2κ°λ‘ μ΄λ£¨μ΄μ§ μ§ν© μ€ ν©μ΄ 9κ° λλ μ§ν©μ λ€μκ³Ό κ°μ΄ 4κ°κ° μμ΅λλ€.
{ 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 }
κ·Έμ€ κ° μμμ κ³±μ΄ μ΅λμΈ { 4, 5 }κ° μ΅κ³ μ μ§ν©μ
λλ€.
μ§ν©μ μμμ κ°μ nκ³Ό λͺ¨λ μμλ€μ ν© sκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ,
μ΅κ³ μ μ§ν©μ return νλ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
"""
def solution(n, s):
if n>s:
return [-1]
share = s//n
remainder = s%n
return sorted([share + 1 if (remainder:= remainder-1)>=0 else share for _ in range(n)])
"""
κ°μ₯ κ³±μ΄ μ»€μ§λ €λ©΄ κ³±λ€μ κ°μ΄ κ· λ±ν΄μΌνλ€κ³ μκ°νλ€.
n=2, s=17μ μλ‘ λ€λ©΄ 1x16λ³΄λ€ 8x9κ° λ ν¬λ€.
n=3, s=19λ₯Ό μλ‘ λ€λ©΄ 1x1x17, 2x2x15λ³΄λ€ 6x6x7μ΄ λ ν¬λ€.
κ·Έλμ μκ°ν λ°©μμ΄ sλ₯Ό nμΌλ‘ λλ λͺ«λ§νΌ 리μ€νΈμ λ£κ³
λλ¨Έμ§λ§νΌ ν μμλ§λ€ 1μ λν΄μ£Όλ κ²μ΄μλ€.
n=2, s=17 -> 17//2 = 8, 17%2 = 1μ΄λ€. [8, 8+1]
n=3, s=19 -> 19//3 = 6, 19%3 = 1μ΄λ€. [6, 6, 6+1]
μ€λ¦μ°¨μμΌλ‘ λ°°μΉν΄μΌν΄μ sortλ₯Ό νμκ³
remainderμμ 1μ λΉΌμ€ λ€ κ·Έ remainderμ 0μ λΉκ΅νμ¬ μμ§ λλ¨Έμ§κ° λ¨μμμΌλ©΄
λͺ«μ 1μ λν΄μ κ°μ λ£μ΄μ£Όμκ³ λλ¨Έμ§κ° μμΌλ©΄ 1μ λν΄μ£Όμ§ μλ shareκ°λ§ λ£μ΄μ£Όμλ€.
"""
728x90
λ°μν
λκΈ