- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/49993

 

Lv2문제이고, 스스로 푼 문제다!

처음에는 문제를 코드로 옮기는데 우왕좌왕했던 것 같다 

문제에서 핵심은 skill의 모든 문자를 다 가지고 있지 않아도 skill과 겹치는 알파벳들을 나열했을 때 skill의 순서와 일치하는 skill_tree들만 세는 것이다 

예제에서 0인덱스 문자열은 skill의 알파벳을 다 가지고 있지만, 순서가 맞지 않기 때문에 조건을 만족하지 못한다

그래서 skill_tree중에서 skill에 포함되는 모든 문자들을 모은 후 그것들이 skill의 순서와 같으면 count하고 아니라면 넘어간다

 

문제 해설

1. skill_trees에 있는 문자열 하나씩 탐색한다. 인덱스를 사용할 것이므로 list로 변환해준다

2. skill_tree에서 skill에 포함되는 문자인 경우 temp에 추가한다

3. temp의 길이만큼 skill을 잘랐을 때, 자른 리스트와 temp가 일치하면 숫자를 count하고, 아니면 넘어간다 

4. 센 문자열의 갯수를 반환한다

 

 

- 정답 풀이 :

def solution(skill, skill_trees):
    count = 0
    skill = list(skill)
    
    #skill에 해당하는 알파벳들의 skill_tree에서 인덱스를 순서대로 구한다 
    for skill_tree in skill_trees:
        skill_tree = list(skill_tree)
        temp = []
        for i in range(len(skill_tree)):
            if skill_tree[i] in skill:
                temp.append(skill_tree[i])
                                       
        if temp == skill[: len(temp)]:
            count += 1
                      
    return count

+ Recent posts