[프로그래머스] 스킬트리 / Python

2020. 12. 29. 17:18·Programmers
반응형

TITLE

문제주소 :programmers.co.kr/learn/courses/30/lessons/49993

 


<문제 설명>

선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다.

예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다.

위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다.

선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요.

제한 조건

  • 스킬은 알파벳 대문자로 표기하며, 모든 문자열은 알파벳 대문자로만 이루어져 있습니다.
  • 스킬 순서와 스킬트리는 문자열로 표기합니다.
    • 예를 들어, C → B → D 라면 CBD로 표기합니다
  • 선행 스킬 순서 skill의 길이는 1 이상 26 이하이며, 스킬은 중복해 주어지지 않습니다.
  • skill_trees는 길이 1 이상 20 이하인 배열입니다.
  • skill_trees의 원소는 스킬을 나타내는 문자열입니다.
    • skill_trees의 원소는 길이가 2 이상 26 이하인 문자열이며, 스킬이 중복해 주어지지 않습니다.

 

<풀이법>

▒ 한줄 개념: 순차 비교 ▒ 

이선형 순차 비교를 하면서, 두 개의 변수 값을 비교하여 결과를 내는 방식을 사용했습니다.

  • skill 순서와 skill tree의 비교에 대한 두 개의 int형 변수 선언.
  • 변수 1: skill tree안에 들어있는 순서 스킬의 수
  • 변수 2: skill tree에 순서대로 들어있는 skill의 수
  • 두 변수가 동일할 시 answer +1 , 아닐 경우 pass

 

<코드(Python)>

def solution(skill, skill_trees):
    answer = 0
    
    for skill_tree in skill_trees:
        total_used_skill = 0
        continuosly_found_skill = 0
        i = 0
        for s in skill:
            if s in skill_tree:
                total_used_skill += 1
            while i < len(skill_tree):
                if skill_tree[i] == s:
                    continuosly_found_skill += 1
                    break
                else: 
                    i += 1
        if total_used_skill == continuosly_found_skill:
            answer += 1
            
    return answer

 

<다른 사람의 코드(Python)>

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

 

더 많은 코드 보기(GitHub) : github.com/dwkim-97/CodingTest

 

 

반응형

'Programmers' 카테고리의 다른 글

[프로그래머스] 주식가격 / Python (Level 2)  (0) 2020.12.30
[프로그래머스] 베스트앨범 / Python (Level 3)  (0) 2020.12.30
[프로그래머스] 두 개 뽑아서 더하기 / Python  (0) 2020.12.29
[프로그래머스] 가장 큰 수 Python (level 2)  (2) 2020.12.27
[프로그래머스] 위장 Python (Level 2)  (0) 2020.12.24
'Programmers' 카테고리의 다른 글
  • [프로그래머스] 주식가격 / Python (Level 2)
  • [프로그래머스] 베스트앨범 / Python (Level 3)
  • [프로그래머스] 두 개 뽑아서 더하기 / Python
  • [프로그래머스] 가장 큰 수 Python (level 2)
개발하는 사막여우
개발하는 사막여우
개발개발 주저리주저리
    반응형
  • 개발하는 사막여우
    개발하는 사막여우
    개발하는 사막여우
  • 전체
    오늘
    어제
    • All (311)
      • Books (13)
        • 읽기 좋은 코드가 좋은 코드다 (13)
      • Study (6)
        • Blockchain (3)
        • Algorithm (3)
      • Baekjoon (36)
      • Programmers (166)
      • LeetCode (15)
      • Open Source (1)
        • Youtube Popout Player (1)
      • Language (32)
        • Python (9)
        • JS (8)
        • Java (5)
        • HTML (6)
        • CSS (4)
      • Library & Framework (15)
        • React.js (15)
      • IDE (2)
        • IntelliJ (2)
      • Airdrop (9)
      • Tistory (2)
      • etc.. (7)
        • Cozubi (6)
        • lol-chess (0)
  • 블로그 메뉴

    • Github
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    카카오 알고리즘 문제
    코딩테스트연습
    programmers
    코주비
    Cozubi
    프로그래머스 위클리 챌린지
    코인줍줍
    클린 코드
    카카오 공채
    신규 코인 에어드랍
    파이썬
    카카오 코딩테스트
    Python
    프로그래머스
    2018 KAKAO BLIND RECRUITMENT
    백준
    Java
    읽기 좋은 코드가 좋은 코드다
    클린 코드 작성법
    알고리즘문제풀이
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
개발하는 사막여우
[프로그래머스] 스킬트리 / Python
상단으로

티스토리툴바