프로그래머스 스킬트리 코드 및 해설 (파이썬)
2021. 4. 7. 16:14ㆍalgorithm
반응형
programmers.co.kr/learn/courses/30/lessons/49993
💡 skill에서 순서가 정해진 스킬을 제외한 스킬들은 valid 여부에 영향을 주지 않습니다. 따라서 이러한 스킬들은 지운 상태에서 valid 여부를 확인하고자 합니다.
주어진 skill에서 가능한 순서를 모두 구해 valid에 저장합니다.
- ex) skill = "CBD"인 경우, valid = ['', 'C', 'CB', 'CBD']
- 빈 스트링의 경우 skill에 주어진 스킬 중에선 아무것도 배우지 않는 경우를 의미함
각 skill_tree에 대해 skill에 포함되지 않은 스킬은 모두 지운 상태가 valid에 포함되는지 확인합니다. 포함되면 answer를 1씩 증가시킵니다.
- ex) skill_tree = "BACDE"인 경우, skill에 포함되지 않은 스킬을 모두 지운 상태는 "BCD"이고, 이 "BCD"가 valid 안에 있지 않으므로 answer는 증가하지 않음
- 시간 복잡도: O(NM)
def solution(skill, skill_trees):
answer = 0
# 주어진 skill에서 가능한 순서
# ex) skill = "CBD"인 경우, valid = ['', 'C', 'CB', 'CBD']
valid = [skill]
for i in range(len(skill)):
valid.append(skill[:i])
# 각 skill_tree에 대해
for skill_tree in skill_trees:
# 주어진 skill에 포함되지 않은 스킬은 지운 상태가 valid에 포함되는지 확인
# ex) skill_tree = "BACDE"인 경우, "BCD"가 valid 안에 있지 않으므로 answer는 증가하지 않음
if ''.join([s for s in skill_tree if s in skill]) in valid:
answer += 1
return answer
반응형
'algorithm' 카테고리의 다른 글
프로그래머스 땅따먹기 코드 및 해설 (파이썬) (0) | 2021.04.13 |
---|---|
프로그래머스 뉴스 클러스터링 코드 및 해설 (파이썬) (0) | 2021.04.13 |
프로그래머스 정수 삼각형 코드 및 해설 (파이썬) (0) | 2021.04.09 |
프로그래머스 단어 변환 코드 및 해설 (파이썬) (0) | 2021.04.08 |
프로그래머스 다리를 지나는 트럭 코드 및 해설 (파이썬) (0) | 2021.04.07 |