[Programmers] 스킬 트리

hodu·2022년 10월 23일
0

algorithm

목록 보기
18/27

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

<하다 보면 나온다!>

그렇게 까다로웠던 편은 아니었던 문제.

나는 이렇게 접근했다.

'skill의 index를 가지고 풀면 해결 방안이 나오지 않을까?'

skill = 'CBD'
skill_trees = ["BACDE"]

멍 때리고 고민하고 있는 것보다 코딩을 해보는 게 가장 중요하니까
일단 무작정 생각나는 대로 해봤다.

<내가 써봤던 방법>

  1. 빼서 음수가 되면?(실패)
    CBD는 순서대로 0,1,2이다. 이걸 빼면 0 - 1 - 2 = -3
    만약 BACDE라면? 마찬가지로 1 - 0 - 2 = -1이 된다.
    둘 다 음수가 되니까 이 방법은 실패다.

(다시 생각해 보니 빼도 될 것 같은데? 흠 이건 고민해 봐야겠다.)

  1. ⭐️결과값이 정렬한 값과 같으면?⭐️

BACDE의 인덱스를 뽑아오면 [1, 0, 2]이고, 이 값을 정렬하면 [0,1,2]이다.
두 개의 값이 같지 않으므로 이 스킬 트리는 가능하지 않다.

아래는 이 방법을 토대로 구현한 코드이다.

def solution(skill, skill_trees):
    answer = 0
    for i in skill_trees:
        temp = []
        for j in i:
            if j in skill:
                temp.append((skill.index(j)))

        if temp == sorted([i for i in range(len(temp))]):
            answer +=1
            print(i)

    return answer

더 좋은 방법이 있을 것 같긴 하다.
중간에 같지 않으면 빠져나올 수도 있지 않을까....

profile
안녕 세계!

0개의 댓글