본문 바로가기
프로젝트들/코딩 테스트

[코딩테스트] 프로그래머스 - 스킬트리 (Lv.2) in Python

by 코곰 2021. 2. 14.

스킬트리 후보들을 담은 배열 skill_trees와, 선행스킬순서 skill이 매개변수로 주어질 때,

가능한 스킬트리 갯수를 return.

 

예시:

skills = "CBD"

skill_trees = ["BACDE", "CBADF", "AECB", "BDA"]

 

answer = 2

 

 

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

 

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

 

programmers.co.kr

 

풀이

- 각각의 스킬트리 후보를 봤을 때,

skills에 있는 알파벳들이

순서대로 나타나면 가능한 스킬트리이다.

 

파이썬 구현

 

def solution(skill, skill_trees):
    imposs = 0 # count the number of impossible skill trees
    
    for i in skill_trees:
    	# filter letters that are in skill only
        tmp = []
        for j in i:
            if j in skill:
                tmp.append(j)
        
        # see if the letters appear in the same order as skill
        for i in range(len(tmp)):
            if tmp[i] != skill[i]:
                imposs += 1
                break
                
    answer = len(skill_trees)-imposs
    
    return answer

 

 

 

다른 분들의 풀이

- for - else 문을 사용해서 더 깔끔하게 푸신 분들이 많았다!

- 내 풀이는 for문이 너무 많아서 마음에 안 들었는데, 이런 식으로 풀면 논리는 비슷해도 더 pythonic하고 깔끔해보였다.

def solution(skill, skill_trees):
    answer = 0
    
    for i in skill_trees:
        tmp = ''
        for j in i:
            if j in skill:
                tmp += j
        
        if tmp == skill[:len(tmp)]:
        	answer+=1
 
    return answer
    

 

깔끔!

댓글