728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/132265
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
๋ฐ์ํ
๋๊ธ