๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš€ Development/Problem Solving

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜ (Lv.1) - ํŒŒ์ด์ฌ(Python)

by Jay Din 2024. 6. 19.
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

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

 

์ œํ•œ์‚ฌํ•ญ

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

 

์ž…์ถœ๋ ฅ ์˜ˆ

participant completion return
["leo", "kiki", "eden"] ["eden", "kiki"] "leo"
["marina", "josipa", "nikola", "vinko", "filipa"] ["josipa", "filipa", "marina", "nikola"] "vinko"
["mislav", "stanko", "mislav", "ana"] ["stanko", "ana", "mislav"] "mislav"

 

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • ์˜ˆ์ œ #1: "leo"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ์ œ #2: "vinko"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ์ œ #3: "mislav"๋Š” ์ฐธ์—ฌ์ž ๋ช…๋‹จ์—๋Š” ๋‘ ๋ช…์ด ์žˆ์ง€๋งŒ, ์™„์ฃผ์ž ๋ช…๋‹จ์—๋Š” ํ•œ ๋ช…๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ช…์€ ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ฌธ์ œ ํ’€์ด

collections ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ defualtdict์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฐ’์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ฃผ์—ˆ๋‹ค

1. ์™„์ฃผํ•œ ์„ ์ˆ˜์˜ ๊ฐ’์„ +1

2. ์ถœ์ „ํ•œ ์„ ์ˆ˜์˜ ๊ฐ’์„ -1

์œ„์™€ ๊ฐ™์ด ๋กœ์ง์„ ์„ค๊ณ„ํ•˜์—ฌ ๋™๋ช…์ด์ธ์ธ ์„ ์ˆ˜ ์ค‘ ํ•œ ์„ ์ˆ˜๋งŒ ๋“ค์–ด์™”์„ ๋•Œ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ 'lee'์„ ์ˆ˜๊ฐ€ 2๋ช…์ผ ํ•œ์„ ์ˆ˜๋งŒ ์™„์ฃผํ•˜์˜€๋‹ค๋ฉด lee๊ฐ’์€ -1์ด ๋  ๊ฒƒ์ด๋‹ค.

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

๋™๋ช…์ด์ธ์˜ ์„ ์ˆ˜๊ฐ€ ์—†๋”๋ผ๋„ ์™„์ฃผํ•œ ์„ ์ˆ˜๋ฅผ +1๋กœ ์ง€์ •ํ•ด ๋†“๊ณ  ์ถœ์ „ ์„ ์ˆ˜ -1์„ ํ•˜๋‹ค๋ณด๋ฉด ํ•œ๋ช…์€ -1์„ ๋ฐ›๊ฒŒ ๋˜์–ด์žˆ๋‹ค.

from collections import defaultdict

def solution(participant, completion):
    answer = ''
    
    arr = defaultdict(int)
    
    # 1
    for i in completion:
        arr[i]+=1
        
    # 2
    for i in participant:
        arr[i] -=1
        if arr[i] < 0:
            answer = i
    
    return answer

 

728x90
๋ฐ˜์‘ํ˜•