본문 바로가기
프로그래머스/Python

[프로그래머스] 스킬트리 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 19.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 각 스킬트리에서 선행 스킬이 있다면 순서를 딕셔너리로 저장해 둔 다음, 저장한 순서를 선행 스킬 순서와 비교하여 순서를 위반하는지 확인하면 해결할 수 있는 문제이다.

 

  1. 스킬트리 배열에서 각 스킬트리를 하나씩 추출한다. for i in skill_trees
  2. 스킬트리에서 선행 스킬을 저장할 딕셔너리를 생성한다. d = {}
  3. 순서를 나타내줄 변수를 생성하고 초기화한다. num = 0
  4. 추출한 스킬트리의 각 스킬을 하나씩 추출하여 for j in i
  5. 만약 추출한 스킬이 선형 스킬에 있는 스킬이라면 if (j in skill)
  6. 순서를 key로 하고 해당 스킬을 value로 하여 딕셔너리에 저장한다. d[num] = j
  7. 그리고 순서를 다음 순서로 넘겨준다. num += 1
  8. 스킬트리의 모든 스킬을 탐색했다면 무조건 가능한 스킬이라고 가정한다. answer += 1
  9. 저장한 딕셔너리를 앞 순서부터 확인하며 for j in d
  10. 만약 스킬트리의 스킬 순서가 선행 스킬 순서를 위반했다면 if (d[j] != skill[j])
  11. 불가능한 스킬이다. answer -= 1
  12. 불가능한 스킬로 판별되었으므로 판별을 종료한다. break
반응형

3. 소스코드

def solution(skill, skill_trees):
    answer = 0

    for i in skill_trees:
        d = {}
        num = 0
        for j in i:
            if (j in skill):
                d[num] = j
                num += 1
                
        answer += 1
        for j in d:
            if (d[j] != skill[j]):
                answer -= 1
                break
                
    return answer
728x90
반응형