Coding Test/Algorithms

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜/Python - Lv.1

The Engineer, Lucy 2025. 7. 7. 19:30

โ“๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/42576?language=python3

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

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

๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด participant์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด completion์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
  • ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • completion์˜ ๊ธธ์ด๋Š” participant์˜ ๊ธธ์ด๋ณด๋‹ค 1 ์ž‘์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์€ 1๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ๐Ÿปํ’€์ด

ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € ๋™๋ช…์ด์ธ์ด ์žˆ๋‹ค๊ณ  ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๊ฐ ์ฐธ์—ฌ์ž ์ด๋ฆ„๋ณ„๋กœ ๋ช‡๋ช…์ธ์ง€ ์„ผ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์™„์ฃผํ•œ ์‚ฌ๋žŒ ์ค‘์— 1 ์ด์ƒ์ด๋ฉด 1 ๋นผ๊ณ  1๋ช…๋งŒ ์žˆ๋‹ค๋ฉด ์•„์˜ˆ ๋”•์…”๋„ˆ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ์—์„œ ๋ณด๋ฉด ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์™„์ฃผํ•œ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ๋”•์…”๋„ˆ๋ฆฌ์—๋Š” ๋ฌด์กฐ๊ฑด ํ•œ๋ช…๋งŒ ๋‚จ๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋”•์…”๋„ˆ๋ฆฌ์˜  key๋งŒ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ์ด ๋•Œ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— list๋กœ ๋ณ€ํ˜•ํ•ด์„œ ์ธ๋ฑ์Šค ์œ„์น˜๊ฐ€ 0์ธ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

๋‚ด ํ’€์ด

def solution(participant, completion):    
    dic = {}
    for p in participant:
        if p not in dic:
            dic[p] = 1
        else:
            dic[p] += 1
    
    for c in completion:
        if dic[c] > 1:
            dic[c] -= 1
        else:
            dic.pop(c)
    
    return list(dic.keys())[0]

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

import collections
# from collections import Counter

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

 

๐Ÿ“ํ›„๊ธฐ

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ collections์— ์žˆ๋Š” Counter๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค.

Counter์— ๋Œ€ํ•ด ์ฐพ์•„๋ณด๋‹ˆ Counter๋Š” ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ฐฐ์—ด์„ ์ธ์ž๋กœ ๋ฐ›์•„ ๊ฐ ์›์†Œ๊ฐ€ ๋ช‡ ๋ฒˆ์”ฉ ๋‚˜์˜ค๋Š”์ง€๊ฐ€ ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ์ธ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ํ™•์žฅํ•˜๊ณ  ์žˆ์–ด์„œ ์‚ฌ์ „์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ Counter๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๊ฐ€ ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋„ ๋งŽ์ด ์ฐจ์ง€ํ•œ๋‹ค. ๋ฌผ๋ก  ์—„์ฒญ๋‚˜๊ฒŒ ํฐ ์ฐจ์ด๋Š” ์•„๋‹ˆ์ง€๋งŒ...