[프로그래머스] LV2. 스킬트리 - 파이썬

곌로그·2023년 4월 27일
0

[python]코딩테스트

목록 보기
7/34
post-thumbnail

문제 링크


문제 요약

스킬을 배울 때는 순서가 존재한다.
예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 한다.
따라서, 입력으로 들어온 스킬 순서와 사용할 스킬 트리들을 비교하여 사용할 수 있다면 답의 값을 증가시키면되는 꽤 간단한 문제다.


문제 풀이

def solution(skill, skill_trees):
    answer = 0
    #문자마다 잘라서 skill에 다시 저장
    #skill = [i for i in skill]
    user = []
    
    for i in range(0, len(skill_trees)):
        user.append([j for j in skill_trees[i]])
    
    for i in range(0, len(user)):
        check=""
        for j in range(0,len(user[i])):            
            if user[i][j] in skill:
                check +=(user[i][j])
        if check in skill and check == skill[:len(check)]:
            print(skill[:len(check)])
            answer +=1


                    
    return answer

📌 고려해야할 점

처음에 스킬 순서를 전부 인덱스로 잘라서 넣은 다음에 비교해야하나 싶었는데, 그냥 스킬 트리들을 잘 받아 온 다음에 문자열 비교해주는게 좋아보인다.
따라서, 정답 check 부분에 if check in skill and check == skill[:len(check)] 다음과 같은 조건문이 들어간다.
check하고 싶은 스킬들과 skill 순서를 그대로 비교했을 때, 같고 skill의 일부분만 들어왔을 수 있으니까 위의 방법과 같이 slice해서 비교한 경우가 전부 성립할 경우에만 정답으로 인정한다.

0개의 댓글