250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level3 (졜고의 집합) λ³Έλ¬Έ

πŸ“ Coding Test/Programmers

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level3 (졜고의 집합)

γ…… γ…œ γ…” γ…‡ 2023. 1. 18. 04:35
728x90

1. 문제 μ„€λͺ…

μžμ—°μˆ˜ n 개둜 이루어진 쀑볡 집합(multi set, νŽΈμ˜μƒ μ΄ν›„μ—λŠ” "집합"으둜 톡칭) 쀑에 λ‹€μŒ 두 쑰건을 λ§Œμ‘±ν•˜λŠ” 집합을 졜고의 집합이라고 ν•©λ‹ˆλ‹€.

  1. 각 μ›μ†Œμ˜ 합이 Sκ°€ λ˜λŠ” 수의 집합
  2. μœ„ 쑰건을 λ§Œμ‘±ν•˜λ©΄μ„œ 각 μ›μ†Œμ˜ κ³± 이 μ΅œλŒ€κ°€ λ˜λŠ” 집합

예λ₯Ό λ“€μ–΄μ„œ μžμ—°μˆ˜ 2개둜 이루어진 집합 쀑 합이 9κ°€ λ˜λŠ” 집합은 λ‹€μŒκ³Ό 같이 4κ°œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
{ 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 }
그쀑 각 μ›μ†Œμ˜ 곱이 μ΅œλŒ€μΈ { 4, 5 }κ°€ 졜고의 μ§‘ν•©μž…λ‹ˆλ‹€.

μ§‘ν•©μ˜ μ›μ†Œμ˜ 개수 nκ³Ό λͺ¨λ“  μ›μ†Œλ“€μ˜ ν•© sκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 졜고의 집합을 return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

 

 

 

 

 

2. μ œν•œμ‚¬ν•­

  • 졜고의 집합은 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ 1차원 λ°°μ—΄(list, vector) λ‘œ return ν•΄μ£Όμ„Έμš”.
  • λ§Œμ•½ 졜고의 집합이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ— ν¬κΈ°κ°€ 1인 1차원 λ°°μ—΄(list, vector) μ— -1 μ„ μ±„μ›Œμ„œ return ν•΄μ£Όμ„Έμš”.
  • μžμ—°μˆ˜μ˜ 개수 n은 1 이상 10,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • λͺ¨λ“  μ›μ†Œλ“€μ˜ ν•© sλŠ” 1 이상, 100,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

 

 

 

 

 

 

 

3. λ‚΄ 풀이

def solution(n, s):
    if s//n < 1:
        return [-1]
    
    answer = []
    while s >= 0:
        if s % n == 0:
            answer.extend([s//n for _ in range(n)])
            break
        else:
            answer.append(s//n+1)
            s = s - s//n -1
            n -= 1
            
    return sorted(answer)

 

 

 

 

 

 

 

4. λ‹€λ₯Έ μ‚¬λžŒ 풀이 

def bestSet(n, s):
    answer = []
    a = int(s/n)

    if a == 0:
        return [-1]

    b = s%n

    for i in range(n-b):
        answer.append(a)
    for i in range(b):
        answer.append(a+1)

    return answer

# μ•„λž˜λŠ” ν…ŒμŠ€νŠΈλ‘œ 좜λ ₯ν•΄ 보기 μœ„ν•œ μ½”λ“œμž…λ‹ˆλ‹€.
print(bestSet(3,13))
728x90
Comments