STUDY/Algorithm

[프로그래머스] 스킬트리, python

sinawi95 2021. 6. 26. 23:08
728x90

https://programmers.co.kr/learn/courses/30/lessons/49993

 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr

def solution(skill, skill_trees):
    answer = 0
    for i in range(len(skill_trees)):
        skill_ind = 0
        for j in range(len(skill_trees[i])):
            tmp_ind = skill.find(skill_trees[i][j])
            # print(skill_ind, tmp_ind)
            if tmp_ind == -1: continue
            if tmp_ind == skill_ind:
                skill_ind += 1
            else:
                break
        else:
            answer += 1
    return answer

skill은 맨 처음 부터 시작해야하므로 순회할때마다 skill_ind를 0으로 초기화를 시켜준다.

그다음 skill_tree의 문자 하나씩 skill에 있는지 확인하면서 값이 없는 경우 continue로 넘어간다.

값이 있는 경우 앞부터 순회해야하므로 skill_ind와 현재 값이 같은지 확인하고 아닌 경우엔 break한다.

break없이 끝까지 순회한경우 사용할수 있는 스킬트리이므로 answer에 1을 더해준다.

이 방법으로 모든 스킬을 순회하면 답이 나온다.

 


이전에 풀었던 문제지만 다시 풀어보았다. 1월달엔 어렵게 풀었는데 이번엔 생각보다 쉽게 풀었다.

https://sinawi.tistory.com/133

 

[프로그래머스] LEVEL2 스킬트리, python3, Summer/Winter Coding(~2018)

def solution(skill, skill_trees): answer = 0 for skill_tree in skill_trees: old_val = skill_tree.find(skill[0]) # 이전값과 비교하기 위한 변수. 처음 값은 skill의 첫 글자의 인덱스값 for sk in skill[1:..

sinawi.tistory.com