😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[Programmers] μ—°μ†λœ λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•© λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/Programmers

[Programmers] μ—°μ†λœ λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•©

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 4. 14. 00:54
728x90
λ°˜μ‘ν˜•
μ—°μ†λœ λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•©
λΉ„λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬λœ μˆ˜μ—΄μ΄ μ£Όμ–΄μ§ˆ λ•Œ, λ‹€μŒ μ‘°κ±΄μ„ λ§Œμ‘±ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄
  κΈ°μ‘΄ μˆ˜μ—΄μ—μ„œ μž„μ˜μ˜ λ‘ μΈλ±μŠ€μ˜ μ›μ†Œμ™€ κ·Έ μ‚¬μ΄μ˜ μ›μ†Œλ₯Ό λͺ¨λ‘ ν¬ν•¨ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄
  λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•©μ€ k
  ν•©μ΄ k인 λΆ€λΆ„ μˆ˜μ—΄μ΄ μ—¬λŸ¬ κ°œμΈ κ²½μš° κΈΈμ΄κ°€ μ§§μ€ μˆ˜μ—΄μ„ μ°ΎκΈ°
  κΈΈμ΄κ°€ μ§§μ€ μˆ˜μ—΄μ΄ μ—¬λŸ¬ κ°œμΈ κ²½μš° μ•žμͺ½(μ‹œμž‘ μΈλ±μŠ€κ°€ μž‘은)에 λ‚˜μ˜€λŠ” μˆ˜μ—΄μ„ μ°ΎκΈ°
μˆ˜μ—΄μ„ λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ λ°°μ—΄ sequence와 λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•©μ„ λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ kκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 
쑰건을 λ§Œμ‘±ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄μ˜ μ‹œμž‘ μΈλ±μŠ€μ™€ λ§ˆμ§€λ§‰ μΈλ±μŠ€λ₯Ό λ°°μ—΄μ— λ‹΄μ•„ return ν•˜λŠ” solution ν•¨μˆ˜
μˆ˜μ—΄μ˜ μΈλ±μŠ€λŠ” 0λΆ€ν„° μ‹œμž‘
# μˆ˜μ—΄μ„ λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ λ°°μ—΄ sequence, λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•© k
def solution(sequence, k):
    answer = []
    n = len(sequence)

    max_sum = 0
    end = 0
    res = []
    
    for i in range(n):
        # λΆ€λΆ„ μˆ˜μ—΄μ˜ 합이 k 될 λ•ŒκΉŒμ§€ ν•©μ‚°ν•˜κΈ°
        while max_sum < k and end < n:
            max_sum += sequence[end]
            end += 1
        # λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•© kκ³Ό κ°™λ‹€λ©΄
        if max_sum == k:
            # [μ‹œμž‘μ , 끝점, 길이] 
            res.append([i, end-1, end-1-i])

        max_sum -= sequence[i]
    # 길이 짧은 순으둜 μ •λ ¬
    res = sorted(res, key=lambda x: x[2])
    # [μ‹œμž‘μ , 끝점]
    return res[0][:2]

 

 

μ§ˆλ¬Έν•˜κΈ°μ—μ„œ μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€!!

max_sum μ—μ„œ μ™œ sequence[i] λΉΌλŠ”κ±ΈκΉŒ

합이 kκ°€ μ•ˆλ˜λ‹ˆκΉŒ λΉΌκ³  λ‹€μ‹œ λˆ„μ ν•˜λŠ” 건가

728x90
λ°˜μ‘ν˜•
Comments