๐Ÿงฉ Problem Solving/[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42576 ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜ (+๋”•์…”๋„ˆ๋ฆฌ get) (python ํŒŒ์ด์ฌ)

์ œ๋ด‰์•„ 2023. 8. 24. 21:45
 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋ฌธ์ œ ๋‚œ์ด๋„๋Š” ์‰ฝ์ง€๋งŒ, ์ตํ˜€๋‘๋ฉด ์ข‹์€ ๊ธฐ๋ฒ•๋“ค์ด ๋งŽ๋‹ค. ํŒŒ์ด์ฌ์„ ์ฃผ๋ ฅ์œผ๋กœ ์“ฐ๋Š” ๋งŒํผ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ๋งŽ์ด ํ™œ์šฉํ•ด์•ผ๊ฒ ๋‹ค.


์•„์ด๋””์–ด

participant์— ์žˆ๋Š” ์ด๋ฆ„์„ key, ์ด๋ฆ„์˜ ์ค‘๋ณต ๊ฐœ์ˆ˜๋ฅผ value๋กœ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  completion๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ด๋ฆ„์ด ๋‚˜์˜ฌ ๋•Œ๋งˆ๋‹ค -1 ํ•ด์ค€๋‹ค. 

 

๋ฌธ์ œ์—์„œ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋งŒ ์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ๋”•์…”๋„ˆ๋ฆฌ์—์„œ value์˜ ๊ฐ’์ด 1์ธ ๊ฑธ ์ฐพ์•„ return ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.


์ „์ฒด ์ฝ”๋“œ

def solution(participant, completion):
    
    dic = {}
    
    for p in participant:
        dic[p] = dic.get(p, 0) + 1
    
    for c in completion:
        dic[c] -= 1
    
    dnf = [k for k, v in dic.items() if v > 0]
    
    return dnf[0]

์ฝ”๋“œ ์„ค๋ช…

for p in participant:
	dic[p] = dic.get(p, 0) + 1

 

๋”•์…”๋„ˆ๋ฆฌ์— get๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊น”๋”ํ•˜๊ฒŒ key, value ์Œ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

dic.get(x)๋Š” ํ•˜๋ฉด key๊ฐ€ x์ธ value๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค. 

์—ฌ๊ธฐ์„œ dic.get(x, '๋””ํดํŠธ ๊ฐ’')๋Š”, dic์—์„œ x์˜ ๋Œ€์‘๋˜๋Š” key๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋””ํดํŠธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค.

 

๋”ฐ๋ผ์„œ dic[p] = dic.get(p, 0) + 1 ๋Š” dic์•ˆ์— p๋ผ๋Š” key๊ฐ€ ์žˆ์œผ๋ฉด value + 1, p๋ผ๋Š” key๊ฐ€ ์—†์œผ๋ฉด dic[p] = 1์ด ๋œ๋‹ค.

์ด๋Ÿฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด if๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๊น”๋”ํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

    dnf = [k for k, v in dic.items() if v > 0]
    
    return dnf[0]

๋”•์…”๋„ˆ๋ฆฌ์— items๋ผ๋Š” ๋ฉ”์„œ๋“œ์™€ ๋ฆฌ์ŠคํŠธ ์ปจํ”„๋ฆฌํ—จ์…˜์„ ์‚ฌ์šฉํ•ด์„œ value๊ฐ€ 0๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, key์™€ value๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค.

๋ฌธ์ œ ์กฐ๊ฑด์—์„œ ์™„์ฃผ ๋ชปํ•œ ์„ ์ˆ˜๋Š” 1๋ช…์ด๋ฏ€๋กœ dnf[0]์œผ๋กœ ์„ ์ˆ˜ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.