๐Ÿงฉ Algorithm/[Programmers] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  KIT

[Programmers/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  KIT] ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

devCloud 2026. 3. 18. 14:34

[Programmers] ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

Level 1 | #ํ•ด์‹œ

1. ๋ฌธ์ œ ์š”์•ฝ

์ˆ˜๋งŽ์€ ๋งˆ๋ผํ†ค ์„ ์ˆ˜๋“ค์ด ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•˜์˜€๋‹ค. ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ๋งˆ๋ผํ†ค์„ ์™„์ฃผํ•˜์˜€๋‹ค.

์ฐธ๊ฐ€์ž ๋ช…๋‹จ(participant)๊ณผ ์™„์ฃผ์ž ๋ช…๋‹จ(completion)์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

2. ์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ํฌ์ธํŠธ

์ฐธ๊ฐ€์ž ์ค‘ ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํ•ต์‹ฌ์ด๋‹ค. ๋‹จ์ˆœํžˆ ์กด์žฌ ์—ฌ๋ถ€๋งŒ ์ฒดํฌํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ, ๊ฐ ์ด๋ฆ„๋ณ„ ์ธ์›์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

  • โœ… ์ž๋ฃŒ๊ตฌ์กฐ: Python์˜ dict(Hash Table)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฆ„๋ณ„ ์ธ์›์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • โœ… ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) ์ด๋‚ด์— ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. participant์™€ completion์„ ๊ฐ๊ฐ ํ•œ ๋ฒˆ์”ฉ ์ˆœํšŒํ•˜๋ฏ€๋กœ O(n)์— ํ•ด๋‹นํ•œ๋‹ค.

3. ๊ตฌํ˜„ ์ฝ”๋“œ (Python)

def solution(participant, completion):
    d = {}
    for people in participant:
        d[people] = d.get(people, 0) + 1
        
    for complete in completion:
        if complete in d:
            d[complete] += -1

    for key, value in d.items():
        if value != 0:
            return key

๐Ÿ“Œ ๋”•์…”๋„ˆ๋ฆฌ ์กฐํšŒ ๋ฐฉ๋ฒ•: d.get(์š”์†Œ, 0)์€ ์š”์†Œ๊ฐ€ ์—†์œผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค.

๐Ÿ“Œ ๋”•์…”๋„ˆ๋ฆฌ ์ˆœํšŒ: d.items()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ for๋ฌธ์—์„œ key์™€ value๋ฅผ ๋™์‹œ์— ๊บผ๋‚ด์–ด ์ฒ˜๋ฆฌํ•œ๋‹ค.

4. ๋ฆฌํŒฉํ† ๋ง - Counter ์‚ฌ์šฉ

Python์˜ collections.Counter๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ฐ€๋…์„ฑ์„ ํ›จ์”ฌ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

from collections import Counter

def solution(participant, completion):
    return list((Counter(participant) - Counter(completion)).keys())[0]

Counter ๊ฐ์ฒด ๊ฐ„์˜ ๋บ„์…ˆ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ, ๊ฐ’์ด 0 ์ดํ•˜์ธ ํ‚ค๋Š” ์ž๋™์œผ๋กœ ์ œ์™ธ๋œ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‚จ์€ ํ‚ค ๋ฆฌ์ŠคํŠธ์—์„œ ์ฒซ ๋ฒˆ์งธ ์›์†Œ([0])๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

[์˜ˆ์‹œ] Counter ๊ฒฐ๊ณผ๊ฐ’

Counter({'leo': 1, 'kiki': 1, 'eden': 1})