데이터사이언스 기록기📚

[프로그래머스/Python] Level 2_스킬트리(Summer/Winter Coding(~2018)) 본문

Coding Test/프로그래머스(Python)

[프로그래머스/Python] Level 2_스킬트리(Summer/Winter Coding(~2018))

syunze 2022. 11. 4. 13:10

📌문제 유형

Summer/Winter Coding(~2018)

 

📌문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📌나의 문제풀이

- skill_trees내 하나의 문자  skill_order에 저장 : skill_order = {문자열 : 문자열 인덱스}

 - skill_order에 skill이 있으면 num에 저장 : num = {문자열 : 문자열 인덱스}

 - num의 크기 0인 경우 answer 1개 추가 (skill이 아직 시작하지 않아서 가능한 skill_tree이기 때문)

 - num_sort에 num 정렬

 - num_sort와 skill의 순서 확인

import collections

def solution(skill, skill_trees):
    answer= 0
    
    for tree in skill_trees:
        num = {}
        skill_order = {string : tree.index(string) for string in tree}
        for s in skill:
            if s in skill_order.keys():
                num[s] = skill_order[s]
        
        if len(list(num.keys())) == 0:
            answer += 1
            continue
        
        # 숫자 순서 판별
        num_sort = sorted(num.items(), key = lambda x:x[1])
        num_sort = collections.OrderedDict(num_sort)
        num_sort = list(num_sort.keys())
 
        for i in range(len(num_sort)):
            if skill[i] == num_sort[i]:
                if i == len(num_sort)-1:
                    answer += 1
                continue
            else:
                break

    return answer

 

📌다른 사람의 풀이

 1) for - else 문 : break로 끊기지 않고 수행되면 else문 실행

def solution(skill, skill_trees):
    answer = 0

    for skills in skill_trees:
        skill_list = list(skill)

        for s in skills:
            if s in skill:
                if s != skill_list.pop(0):
                    break
        else:
            answer += 1

    return answer

 2) skill[0:len(skillist)]로 skill 시작 안 한것도 포함

def solution(skill,skill_tree):
    answer=0
    for i in skill_tree:
        skillist=''
        for z in i:
            if z in skill:
                skillist+=z
        if skillist==skill[0:len(skillist)]:
            answer+=1
    return answer

 

📌리뷰 

- (skill이 아직 시작하지 않아서 가능한 skill_tree이기 때문) 이 부분이 핵심

728x90
Comments