Guidelines

λͺ©ν‘œκ°’보닀 큰 합을 가진 μ •μˆ˜ 리슀트 ν•΄μ„€

λͺ©ν‘œκ°’(target)보닀 큰 합을 가진 μ΅œμ†Œ 길이의 μ—°μ†λœ μ •μˆ˜ 리슀트λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.

이 ν•¨μˆ˜λŠ” μŠ€νƒμ„ μ‚¬μš©ν•˜μ—¬ μ—°μ†λœ μ •μˆ˜λ“€μ˜ 합이 target 값을 μ΄ˆκ³Όν•˜λŠ” 지점을 μ°ΎμŠ΅λ‹ˆλ‹€.


ν•¨μˆ˜ κ΅¬ν˜„

  1. μŠ€νƒ μ΄ˆκΈ°ν™” 및 합계 λ³€μˆ˜ μ„€μ •:

    • stack: μ—°μ†λœ μ •μˆ˜λ“€μ„ μ €μž₯ν•  μŠ€νƒμž…λ‹ˆλ‹€.

    • total: μŠ€νƒμ— μžˆλŠ” μ •μˆ˜λ“€μ˜ ν˜„μž¬ ν•©κ³„μž…λ‹ˆλ‹€.

  2. μ •μˆ˜ 리슀트 순회:

    • 주어진 numbers 리슀트의 각 μ •μˆ˜λ₯Ό μˆœνšŒν•˜λ©΄μ„œ:

      • μ •μˆ˜λ₯Ό μŠ€νƒμ— μΆ”κ°€ν•©λ‹ˆλ‹€.

      • 합계 λ³€μˆ˜μ— ν˜„μž¬ μ •μˆ˜λ₯Ό λ”ν•©λ‹ˆλ‹€.

      • 합계가 target을 μ΄ˆκ³Όν•˜λŠ” μˆœκ°„ λ°˜λ³΅μ„ μ€‘λ‹¨ν•©λ‹ˆλ‹€.

  3. κ²°κ³Ό λ°˜ν™˜:

    • μŠ€νƒμ— μ €μž₯된 μ •μˆ˜ 리슀트λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 λ¦¬μŠ€νŠΈλŠ” target 값을 μ΄ˆκ³Όν•˜λŠ” μ΅œμ†Œ 길이의 μ—°μ†λœ μ •μˆ˜λ“€μ„ ν¬ν•¨ν•©λ‹ˆλ‹€.

λͺ¨λ²” λ‹΅μ•ˆ
def solution(target, numbers): stack = [] # μŠ€νƒ μ΄ˆκΈ°ν™” total = 0 # 합계 λ³€μˆ˜ μ΄ˆκΈ°ν™” for num in numbers: # 리슀트 순회 stack.append(num) # μŠ€νƒμ— μ •μˆ˜ μΆ”κ°€ total += num # 합계 μ—…λ°μ΄νŠΈ if total > target: # 합계가 λͺ©ν‘œκ°’을 μ΄ˆκ³Όν•˜λ©΄ 반볡 쀑단 break return stack # μŠ€νƒ λ°˜ν™˜

μ‚¬μš© μ˜ˆμ‹œ

μž…μΆœλ ₯ μ˜ˆμ‹œ
print(solution(15, [1, 2, 3, 5, 7, 8])) # 좜λ ₯: [1, 2, 3, 5, 7]

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help