🧩 Algorithm/[Programmers] μ•Œκ³ λ¦¬μ¦˜ 고득점 KIT

[Programmers/μ•Œκ³ λ¦¬μ¦˜ 고득점 KIT] 같은 μˆ«μžλŠ” μ‹«μ–΄

devCloud 2026. 3. 31. 12:21
728x90

[Programmers] 같은 μˆ«μžλŠ” μ‹«μ–΄

Level 1 | #μŠ€νƒ/큐

1. 문제 μš”μ•½

λ°°μ—΄ arrμ—μ„œ μ—°μ†μ μœΌλ‘œ λ‚˜νƒ€λ‚˜λŠ” μˆ«μžλŠ” μ œκ±°ν•˜κ³  남은 μˆ˜λ“€μ„ λ°˜ν™˜ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

단, 제거된 ν›„ 남은 μˆ˜λ“€μ„ λ°˜ν™˜ν•  λ•ŒλŠ” μ›λž˜μ˜ μˆœμ„œλ₯Ό μœ μ§€ν•΄μ•Ό ν•œλ‹€.

2. μ ‘κ·Ό 방식 및 포인트

λ°°μ—΄μ˜ μ›μ†Œλ₯Ό ν•˜λ‚˜μ”© μˆœνšŒν•˜λ©° κ°€μž₯ μ΅œκ·Όμ— μΆ”κ°€λœ μˆ«μžμ™€ λΉ„κ΅ν•˜μ—¬ 쀑볡 μ—¬λΆ€λ₯Ό νŒλ‹¨ν•œλ‹€.

  • βœ… μŠ€νƒ ν™œμš©: μƒˆλ‘œμš΄ λ°°μ—΄(μŠ€νƒ)을 λ§Œλ“€κ³ , λ§ˆμ§€λ§‰ μš”μ†Œ(stack[-1])κ°€ ν˜„μž¬ μˆ«μžμ™€ λ‹€λ₯Ό λ•Œλ§Œ μΆ”κ°€ν•œλ‹€.
  • βœ… μ˜ˆμ™Έ 처리: μŠ€νƒμ΄ λΉ„μ–΄μžˆλŠ” 초기 μƒνƒœμ—μ„œλŠ” 비ꡐ할 λŒ€μƒμ΄ μ—†μœΌλ―€λ‘œ 무쑰건 숫자λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•œλ‹€.

3. κ΅¬ν˜„ μ½”λ“œ (Python)

def solution(arr):
    stack = []
    for num in arr:
        # μŠ€νƒμ΄ λΉ„μ–΄μžˆκ±°λ‚˜, λ§ˆμ§€λ§‰ μš”μ†Œκ°€ ν˜„μž¬ μˆ«μžμ™€ λ‹€λ₯΄λ©΄ μΆ”κ°€
        if not stack or stack[-1] != num:
            stack.append(num)
            
    return stack

πŸ“Œ 논리 ꡬ쑰: not stack 쑰건이 λ¨Όμ € 였기 λ•Œλ¬Έμ—, μŠ€νƒμ΄ λΉ„μ–΄μžˆμ„ λ•Œ λ°œμƒν•˜λŠ” IndexErrorλ₯Ό λ°©μ§€ν•  수 μžˆλ‹€.

4. πŸ€” if not stack: vs if len(stack) == 0:

λ‘˜ λ‹€ 빈 리슀트λ₯Ό μ²΄ν¬ν•˜λŠ” μ½”λ“œμ΄μ§€λ§Œ, νŒŒμ΄μ¬μ—μ„œλŠ” κ΄€μš©μ μœΌλ‘œ if not stack 방식을 ꢌμž₯ν•œλ‹€.

  • 가독성: μ½”λ“œκ°€ 더 κ°„κ²°ν•˜κ³  "νŒŒμ΄μ¬μŠ€λŸ½λ‹€(Pythonic)".
  • μ„±λŠ₯: λ―Έμ„Έν•œ μ°¨μ΄μ§€λ§Œ ν•¨μˆ˜ 호좜(len()) 과정이 μ—†μ–΄ μ „μžκ°€ 더 λΉ λ₯΄λ‹€.
728x90