๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐˜ผ๐™ก๐™œ๐™ค๐™ง๐™ž๐™ฉ๐™๐™ข/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค '๋กค์ผ€์ดํฌ ์ž๋ฅด๊ธฐ' ํŒŒ์ด์ฌ ํ’€์ด

by beomcoder 2024. 1. 3.
728x90
๋ฐ˜์‘ํ˜•
https://school.programmers.co.kr/learn/courses/30/lessons/132265
 

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

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

programmers.co.kr

def solution(topping):
    ans, front, end = 0, {}, {}
    for t in topping:
        end[t] = end.get(t, 0) + 1
    for t in topping:
        end[t] -= 1
        front[t] = 1
        if end[t] == 0: del end[t]
        ans += len(front.keys()) == len(end.keys())
        # if len(front.keys()) > len(end.keys()): break
    return ans

 

๋‚ด๊ฐ€ ํ‘ผ ๋ฐฉ๋ฒ•

1. ์ฒ˜์Œ์—๋Š” for๋ฌธ์œผ๋กœ topping ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ๋ฉด์„œ ํ•œ์นธ์”ฉ ์˜ฎ๊ธฐ๋ฉด์„œ ์–‘์ชฝ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ set์œผ๋กœ ๋ฌถ์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ–ˆ๋”๋‹ˆ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ์„ฑ๊ณตํ–ˆ์ง€๋งŒ ์ œ์ถœ๊ฒฐ๊ณผ์—์„œ๋Š” 2๊ฐœ๋นผ๊ณ  ์ „๋ถ€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด์•ผํ–ˆ๋‹ค.

 

2. ๋‘๋ฒˆ์งธ๋Š” ํ† ํ•‘์˜ ๊ฐœ์ˆ˜๋ฅผ ์ „๋ถ€ ์„ผ๋‹ค์Œ, ํ•œ์นธ์”ฉ ์ด๋™ํ•˜๋ฉด์„œ ํ† ํ•‘์„ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค. 

for t in topping:
        end[t] = end.get(t, 0) + 1

'''
์ฒ˜์Œ for๋ฌธ์—์„  ํ† ํ•‘์˜ ๊ฐœ์ˆ˜๋ฅผ ์ „๋ถ€ ์„ธ์ฃผ์—ˆ๋‹ค.
๋”•์…”๋„ˆ๋ฆฌ์˜ get์€ end[t]์™€ ๊ฑฐ์˜ ๊ฐ™์€ ์˜๋ฏธ์ด๋‹ค.

end[t]๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ๋•Œ๋Š” ์—†๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ,
get์œผ๋กœ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค๋ฉด None์œผ๋กœ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค. 
end.get(t, default=None)์ด๊ธฐ๋•Œ๋ฌธ์— default๋ถ€๋ถ„์„ 0์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์—ˆ๋‹ค.
'''

for t in topping:
    end[t] -= 1
    front[t] = 1
    if end[t] == 0: del end[t]
    ans += len(front.keys()) == len(end.keys())

'''
๋‘๋ฒˆ์งธ for๋ฌธ์—์„œ๋Š” ํ† ํ•‘์„ ํ•œ์นธ์”ฉ ์˜ฎ๊ธฐ๋ฉด์„œ end์˜ ํ† ํ•‘์„ front์— ์˜ฎ๊ฒผ๋‹ค.
end์˜ ๊ฐ™์€ ํ† ํ•‘๋“ค์„ ์ „๋ถ€ ์˜ฎ๊ฒจ 0์ด ๋๋‹ค๋ฉด, key๋ฅผ ์—†์• ์ฃผ์—ˆ๋‹ค.
ํ† ํ•‘์˜ ์ด ๊ฐœ์ˆ˜๋Š” ์ƒ๊ด€์—†์ด ์„œ๋กœ ๋‹ค๋ฅธ ํ† ํ•‘์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ •๋‹ต์— front์˜ ์„œ๋กœ๋‹ค๋ฅธํ† ํ•‘์˜ ๊ฐœ์ˆ˜์™€ end์˜ ์„œ๋กœ๋‹ค๋ฅธํ† ํ•‘์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด
1์„ ์ถ”๊ฐ€ํ•˜์—ฌ์ฃผ์—ˆ๋‹ค.
'''

# if len(front.keys()) > len(end.keys()): break

'''
๋งŒ์•ฝ ์ˆซ์ž๊ฐ€ ๋” ์ปธ๋‹ค๋ฉด ์ฃผ์„์„ ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
'''

 

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€