๐ณ ๋งํฌ
ํ๋ก๊ทธ๋๋จธ์ค ์คํฌํธ๋ฆฌ
๐ ๋ฌธ์
์ ํ ์คํฌ์ด๋ ์ด๋ค ์คํฌ์ ๋ฐฐ์ฐ๊ธฐ ์ ์ ๋จผ์ ๋ฐฐ์์ผ ํ๋ ์คํฌ์ ๋ปํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ ํ ์คํฌ ์์๊ฐ ์คํํฌ โ ๋ผ์ดํธ๋ ๋ณผํธ โ ์ฌ๋
์ผ๋, ์ฌ๋๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋จผ์ ๋ผ์ดํธ๋ ๋ณผํธ๋ฅผ ๋ฐฐ์์ผ ํ๊ณ , ๋ผ์ดํธ๋ ๋ณผํธ๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋จผ์ ์คํํฌ๋ฅผ ๋ฐฐ์์ผ ํฉ๋๋ค.
์ ์์์ ์๋ ๋ค๋ฅธ ์คํฌ(ํ๋ง ๋ฑ)์ ์์์ ์๊ด์์ด ๋ฐฐ์ธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์คํํฌ โ ํ๋ง โ ๋ผ์ดํธ๋ ๋ณผํธ โ ์ฌ๋
์ ๊ฐ์ ์คํฌํธ๋ฆฌ๋ ๊ฐ๋ฅํ์ง๋ง, ์ฌ๋ โ ์คํํฌ
๋ ๋ผ์ดํธ๋ ๋ณผํธ โ ์คํํฌ โ ํ๋ง โ ์ฌ๋
์ ๊ฐ์ ์คํฌํธ๋ฆฌ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ ํ ์คํฌ ์์ skill๊ณผ ์ ์ ๋ค์ด ๋ง๋ ์คํฌํธ๋ฆฌ1๋ฅผ ๋ด์ ๋ฐฐ์ด skill_trees๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ๋ฅํ ์คํฌํธ๋ฆฌ ๊ฐ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์กฐ๊ฑด
- ์คํฌ์ ์ํ๋ฒณ ๋๋ฌธ์๋ก ํ๊ธฐํ๋ฉฐ, ๋ชจ๋ ๋ฌธ์์ด์ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํฌ ์์์ ์คํฌํธ๋ฆฌ๋ ๋ฌธ์์ด๋ก ํ๊ธฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด, C โ B โ D ๋ผ๋ฉด CBD๋ก ํ๊ธฐํฉ๋๋ค - ์ ํ ์คํฌ ์์ skill์ ๊ธธ์ด๋ 1 ์ด์ 26 ์ดํ์ด๋ฉฐ, ์คํฌ์ ์ค๋ณตํด ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- skill_trees๋ ๊ธธ์ด 1 ์ด์ 20 ์ดํ์ธ ๋ฐฐ์ด์ ๋๋ค.
- skill_trees์ ์์๋ ์คํฌ์ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋๋ค.
- skill_trees์ ์์๋ ๊ธธ์ด๊ฐ 2 ์ด์ 26 ์ดํ์ธ ๋ฌธ์์ด์ด๋ฉฐ, ์คํฌ์ด ์ค๋ณตํด ์ฃผ์ด์ง์ง ์์ต๋๋ค.
๐พ ํ์ด ๋ฐฉ๋ฒ
skill์ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ skill_list์ ์ ์ฅํฉ๋๋ค.
ex. skill = "CBD" -> skill_list = ['C','B','D']
skill_trees์ ์์๋ฅผ tree๋ผ๊ณ ์นญํ๊ฒ ์ต๋๋ค.
tree๋ฅผ ๋์ผํ๊ฒ list๋ก ๋ณํํ๊ณ , tree์ ์ฒซ๋ฒ์งธ ์์๋ถํฐ popํ๋ฉฐ ๋ง์ฝ ํด๋น ์์๊ฐ skill_list์ ์๋ค๋ฉด skill_list์ ์์์ ๋ง๋์ง ํ์ธํ๊ณ , ๋ง์ง ์๋ค๋ฉด chk ๋ณ์๋ฅผ False๋ก ๋ณ๊ฒฝํ ๋ค, breakํฉ๋๋ค. ์ฌ๊ธฐ์ chk๋ณ์๋ ์คํฌ์์์ ์ผ์นํ๋์ง ํ์ธํ๋ ๋ณ์์
๋๋ค.
while๋ฌธ์ด ๋๋ ๋ค chk๊ฐ True์ธ ๊ฒฝ์ฐ์ answer์ ๊ฐ์ 1 ์ฆ๊ฐ์์ผ์ค๋๋ค.
solution ์ฝ๋
def solution(skill, skill_trees):
answer = 0
for tree in skill_trees:
tree = list(tree)
skill_list = list(skill) #skill string์ list๋ก ๋ณํ
chk = True
while tree:
item = tree.pop(0)
if item in skill_list:
s = skill_list.pop(0)
if s != item:
chk = False
break
if chk:
answer += 1
return answer