프로그래머스 Summer/Winter Coding(~2018) : 스킬트리

Minhee kang·2021년 7월 12일
0

문제 보러 가기 👈 클릭!

💡 풀이

✔ 풀이 방법

가능한 스킬순서의 모든 경우를 리스트 skillorder에 추가
=> 빈 문자열 temp = ''을 선언하고, 유저들이 만든 스킬문자열 중 각 스킬이 순서를 지켜야하는 스킬이면 temp에 더한다.
=> temp를 완성한 후
temp가 skill_order에 있을경우_ or temp의 길이가 0인경우(순서를 지켜야하는 스킬이 하나도 없는 경우) answer을 1만큼 증가시킨다.

구현 코드👇

def solution(skill, skill_trees):
    answer = 0
    
    skill_order = []
    for idx in range(1, len(skill)+1):
        skill_order.append(skill[:idx])
        
    for skill_tree in skill_trees:
        temp = ''
        for s in skill_tree:
            if s in skill:
                temp += s
        if temp in skill_order or len(temp) == 0:
            answer += 1
    
    return answer

📝 temp만큼의 길이를 가진, 가능한 스킬 순서는 하나만 존재함
=> 위와 같이 temp가 skill_order에 존재하는지 판단하는 방법 보다, temp와 같은 길이의 가능한 스킬 순서와 temp가 같은지 판단하는 코드를 사용하면 코드가 더 간결해짐 !

같은 방법이지만 더 간결한 코드👇

def solution(skill, skill_trees):
    answer = 0
        
    for skill_tree in skill_trees:
        temp = ''
        for s in skill_tree:
            if s in skill:
                temp += s
        if temp == skill[:len(temp)]:
            answer += 1
    
    return answer

0개의 댓글

관련 채용 정보