๋ฌธ์ ์ค๋ช
์ ํ ์คํฌ์ด๋ ์ด๋ค ์คํฌ์ ๋ฐฐ์ฐ๊ธฐ ์ ์ ๋จผ์ ๋ฐฐ์์ผ ํ๋ ์คํฌ์ ๋ปํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ ํ ์คํฌ ์์๊ฐ ์คํํฌ โ ๋ผ์ดํธ๋ ๋ณผํธ โ ์ฌ๋์ผ๋, ์ฌ๋๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋จผ์ ๋ผ์ดํธ๋ ๋ณผํธ๋ฅผ ๋ฐฐ์์ผ ํ๊ณ , ๋ผ์ดํธ๋ ๋ณผํธ๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋จผ์ ์คํํฌ๋ฅผ ๋ฐฐ์์ผ ํฉ๋๋ค.
์ ์์์ ์๋ ๋ค๋ฅธ ์คํฌ(ํ๋ง ๋ฑ)์ ์์์ ์๊ด์์ด ๋ฐฐ์ธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์คํํฌ โ ํ๋ง โ ๋ผ์ดํธ๋ ๋ณผํธ โ ์ฌ๋์ ๊ฐ์ ์คํฌํธ๋ฆฌ๋ ๊ฐ๋ฅํ์ง๋ง, ์ฌ๋ โ ์คํํฌ๋ ๋ผ์ดํธ๋ ๋ณผํธ โ ์คํํฌ โ ํ๋ง โ ์ฌ๋์ ๊ฐ์ ์คํฌํธ๋ฆฌ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ ํ ์คํฌ ์์ 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_trees | return |
---|---|---|
"CBD" | ["BACDE", "CBADF", "AECB", "BDA"] | 2 |
์ ์ถ๋ ฅ ์ ์ค๋ช
๋ฌธ์ ํ์ด
list์ Index๋ฅผ ๊ฐ์ง๊ณ ๋ฌธ์ ๋ฅผ ํ์๋ค
def solution(skill, skill_trees):
skill_list = list(skill)
answer = 0
for trees in skill_trees:
a = 0
for t in trees:
if t in skill and skill_list[a] != t:
#์คํฌ์ ํด๋น์ด ๋์ง๋ง ์์๋๋ก ์คํฌํธ๋ฆฌ๋ฅผ ์ฐ์ง ์์๋ค๋ฉด
break
if t == skill_list[a]:
#์ ์์ ์ธ ์คํฌํธ๋ฆฌ์ ํด๋น์ด๋๋ค๋ฉด ๋ค์ ์คํฌ index๋ก
a += 1
if a == len(skill):
#๋ชจ๋ ์คํฌํธ๋ฆฌ๋ฅผ ๋ง์ท๋ค๋ฉด answer์ +1
answer += 1
break
if t == trees[-1] and a >=0:
#์คํฌํธ๋ฆฌ ์ค ๋ชจ๋ ๋ฌธ์์ด์ด ํด๋น์ด ์ ๋๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฏ๋ก
# 0๊น์ง ๋ฒ์๋ฅผ ์ฃผ์ด์ผ ํ๋ค
answer += 1
return answer
๋ค๋ฅธ ์ฌ๋ ํ์ด
def solution(skill, skill_trees):
answer = 0
for skills in skill_trees:
skill_list = list(skill)
for s in skills:
if s in skill:
if s != skill_list.pop(0):
break
else:
answer += 1
# for ๋ฌธ์ด ์ ์์ ์ผ๋ก ๋๊น์ง ์คํ์ด ๋๋ค๋ฉด else๋ฌธ์ด ์๋์ด ๋๋ค
return answer