Algorithm/1일 1코테

[💕 프로그래머스] 스킬트리

대인보우 2020. 12. 15. 14:27
반응형

Q. 

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

 

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

 

programmers.co.kr

 

A.

def solution(sinput, skill_trees):
    count = len(skill_trees) # 가능한 스킬트리의 갯수
    
    for s in skill_trees:
        check = '' 
        
        for v in s:
        
            if v in sinput:
                check += v
                
                if check[0] != sinput[0]:
                    count -= 1
                    break
                    
        if check not in sinput:
            count -= 1
            
    return count

skill_trees 중에 가능한 스킬트리를 찾아내는 문제

 

1) count 변수 지정 - 불가능한 스킬트리를 만나면 -1씩 해줄 것이기 때문에 skill_trees의 총 갯수를 저장.

2) check는 sinput에 있는 변수를 누적해 줄 변수

ex. s가 BACDE일 때 sinput은 CBD => check에는 BCD가 저장됨.

3) s에서 하나씩 출력한 v가 sinput에 있을 때 check에 저장해주되, 만약 check의 첫번째와 sinput에 첫번째가 다르면,

check에는 두번째, 세번째,,, 등 첫번째 스킬이 아닌 다른 스킬이 저장되었다는 것이므로 count에서 -1을 해주고 멈춘다.

4) check[0]과 sinput[0]이 같더라도, sinput이 CBD일때 -> CD 등이 저장되었을 경우가 있기 때문에 -1

 

 

* 다른사람 풀이

def solution(skill, skill_trees):
    answer = 0 # count 변수

    for skills in skill_trees:
        skill_list = list(skill) # 스킬순서

        for s in skills:
            if s in skill:
                if s != skill_list.pop(0): #스킬순서와 skill에서 뽑은게 다르면
                    break # 멈춤
        else:
            answer += 1 # 아니면 answer

    return answer

 

반응형