https://school.programmers.co.kr/learn/courses/30/lessons/132265
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
์ฒ์์ ๋จ์ํ๊ฒ ํผ ์ฝ๋
์ฐจ๋ก๋๋ก ๋ฆฌ์คํธ๋ฅผ ๋๋๋ฉด์ set์ผ๋ก ๋ง๋ค์ด ๊ธธ์ด๋ฅผ ๋น๊ตํ๋ค.
# ํ๋ก๊ทธ๋๋จธ์ค 132265: ๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ
def solution(topping):
answer = 0
s = round(len(set(topping)) // 2)
for i in range(s, len(topping)-s+1):
if len(set(topping[:i])) == len(set(topping[i:])):
answer += 1
return answer
1๋ฒ ๋นผ๊ณ ์ ๋ถ ์๊ฐ์ด๊ณผ๋ฅผ ํ๊ณ (...)
์๊ฐ ์ค์ฌ๋ณด๊ฒ ๋ค๊ณ ๋๋ฆ ์ ๋น๋ฅผ ๊ฑฐ์น ํ ๋ค์ ์๋ํ๋ค.
๋งค ์๋๋ง๋ค ๋ถ๋ถ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ ๊ทธ๊ฑธ ๋ ์งํฉ์ผ๋ก ๋ง๋๋ ๊ณผ์ ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๊ณ ํ๋จํ์ฌ
๋ถ๋ถ๋ฆฌ์คํธ, ๋ถ๋ถ์งํฉ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ฃผ๊ณ ํ๋์ฉ ๋นผ๊ณ ๋ํ๋ฉด์ ๊ณ์ฐํ๋ค.
# ํ๋ก๊ทธ๋๋จธ์ค 132265: ๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ
def solution(topping):
answer = 0
s = round(len(set(topping)) // 2)
size = len(topping) - s*2
t1 = topping[:-s]
t2 = topping[-s:]
s1 = set(t1)
s2 = set(t2)
for i in range(size):
if len(s1) == len(s2):
answer += 1
p = t1.pop()
if p not in t1:
s1.remove(pop)
s2.add(p)
return answer
.. 4๋ฌธ์ ? 5๋ฌธ์ ? ๋นผ๊ณ ๋ ์ ๋ถ ์๊ฐ์ด๊ณผํ๋ค.
์ฐพ์๋ณด๋ Counter๋ฅผ ์ด์ฉํ์ฌ ํ ์ ์์๋ค.
์ฒ ์๊ฐ ๊ฐ๋ ๋กค์ผ์ดํฌ๋ ๋์ ๋๋ฆฌ(Counter)๋ก ๊ด๋ฆฌํ๊ณ , ์ฒ ์ ๋์์ด ๊ฐ๋ ๋กค์ผ์ดํฌ๋ ์งํฉ์ผ๋ก ๊ด๋ฆฌํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก t1, t2๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ฃผ๊ณ ํ๋์ฉ ๋นผ๊ณ ๋ํ๋ฉด์ ๊ณ์ฐํ๋ค.
# ํ๋ก๊ทธ๋๋จธ์ค 132265: ๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ
from collections import Counter
def solution(topping):
answer = 0
t1 = Counter(topping)
t2 = set()
for i in topping:
t1[i] -= 1
if t1[i] == 0:
t1.pop(i)
t2.add(i)
if len(t1) == len(t2):
answer += 1
return answer
ํต๊ณผ!!
๐ฌ