_Han_
나의 개발 노트
_Han_
  • 분류 전체보기 (272)
    • 데이터 엔지니어링 (29)
    • 인프라 (3)
    • 추천시스템 (11)
    • 코딩테스트 (146)
    • 부트캠프 회고 (15)
    • 회고 (4)
    • 자격증 (1)
    • 파이썬 프로그래밍 (6)
    • 통계 (2)
    • Git (21)
    • 유니티2D (33)

최근 글

반응형
hELLO · Designed By 정상우.
_Han_

나의 개발 노트

[코딩테스트] 프로그래머스 스킬트리 파이썬(Python)
코딩테스트

[코딩테스트] 프로그래머스 스킬트리 파이썬(Python)

2023. 1. 1. 19:16
반응형

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

 

프로그래머스

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

programmers.co.kr

def solution(skill, skill_trees):
    skill_dic = {}
    count = 0
    for i,s in enumerate(skill):
        skill_dic[s] = i
    for skill in skill_trees:
        users = [-1]
        for s in skill:
            try:
                number = skill_dic[s]
                if number-1 in users:
                    users.append(number)
                else:
                    break
            except:
                pass
        else:   
            count += 1
    return count

저는 먼저 배워야 하는 스킬이 어떤 것인지 확인하기 위하여 딕셔너리 자료구조를 이용하여 스킬의 순서를 입력하여 확인하였습니다.

"CBD" 순서로 스킬을 배워야 한다면

딕셔너리(skill_dic)에는 {"C":0, "B":1, "D":2}로 저장이 됩니다.

 

그리고 주어진 skill_trees를 반복하면서

유저의 스킬(users)을 확인합니다.

이때 초기의 유저의 스킬(users)에는 [-1]로 지정합니다.

 

각 for-else문을 사용하여 각 스킬의 원소(s)를 확인하는데 이때 skill_dic에 배워야하는 스킬의 원소(s)

예를들어 A, B와 같은 스킬의 원소(s) 없다면 에러가 나오기 때문에 try, except 문으로 에러를 처리해줍니다.

 

스킬의 원소(s)가 있다면 스킬의 원소(s)를 스킬 딕셔너리(skill_dic[s])에서 찾게 됩니다.

만약 현재 스킬의 원소의 이전 순서(number-1)가 유저의 스킬(users)에 있다면 현재 스킬의 원소(s)를 유저의 스킬(users)에 넣어줍니다.

예를 들어 현재 스킬의 원소가 "B"라면 skill_dic에서 추출한 값은 1일 것이고 유저의 스킬(users)에는 0이 존재해야합니다.

만약 들어 있지 않다면 break사용하여 반복문을 탈출해줍니다.

마지막으로 for-else문은 for문안에서 break가 없이 무사하게 for문의 반복을 성공하면 else문이 실행되기 때문에 올바른 스킬트리를 가졌을 경우에는 count에 +1을 해줍니다.

 

전체 스킬트리를 반복하고 count를 반환해줍니다.

반응형

'코딩테스트' 카테고리의 다른 글

[코딩테스트] 프로그래머스 가장 긴 팰린드롬 파이썬(Python)  (0) 2023.01.04
[코딩테스트] 프로그래머스 더 맵게 파이썬(Python)  (0) 2023.01.03
[코딩테스트] 프로그래머스 방문 길이 파이썬(Python)  (0) 2022.12.31
[코딩테스트] 프로그래머스 점프와 순간 이동 파이썬(Python)  (0) 2022.12.28
[코딩테스트] 프로그래머스 영어 끝말잇기 파이썬(Python)  (0) 2022.12.27
    '코딩테스트' 카테고리의 다른 글
    • [코딩테스트] 프로그래머스 가장 긴 팰린드롬 파이썬(Python)
    • [코딩테스트] 프로그래머스 더 맵게 파이썬(Python)
    • [코딩테스트] 프로그래머스 방문 길이 파이썬(Python)
    • [코딩테스트] 프로그래머스 점프와 순간 이동 파이썬(Python)
    _Han_
    _Han_
    학습한 것을 기록합니다.

    티스토리툴바