문제
https://school.programmers.co.kr/learn/courses/30/lessons/49993
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력

해설
skill이 주어질 때 해당 스킬트리에 맞게끔 스킬을 배웠는지 체크하는 문제이다.
해당 문제는 단순하게 skill의 순서만 맞게 스킬이 찍혔는지 체크하면 되는 문제인데, 구현하다보면 그리 단순하지는 않다는 것을
알 수 있다.
그래서 필자는 skill의 순서를 하나하나 해시를 이용하여 idx를 맵핑하였다.
그렇게 하여서 내가 마지막으로 어떤 스킬을 배웠는지 기억하며 skill_trees를 확인하였다.
순서는 다음과 같다.
1. skill_trees를 for문으로 돈다.
2. 현재 배워야 하는 스킬을 의미하는 변수를 선언한다.
3. 현재 체크하고 있는 skill_tree를 for문으로 돈다.
4. 현재 체크하고 있는 스킬트리 i번째 스킬이 skill에 있는지 확인한다.
5. 있다면 내가 배워야 하는 스킬 번호와 맞는지 체크한다.
이 모든 과정을 거치고 5번에서 틀리다면 break로 빠져 나오므로
for - else구문을 이용하여 answer를 증가하게끔 해주었다.
정답코드
더보기
'''
'25. 10. 16.(목)
1. 스파크 -> 라이트닝 볼트 -> 썬더
1. skill에 맞게끔 있는지 들어갔는지만 확인하면 된다.
'''
def solution(skill, skill_trees):
answer = 0
#무조건
order = {}
for idx, value in enumerate(skill):
order[value] = idx
for trees in skill_trees:
last_idx = 0
for value in trees:
if value in order:
now_idx = order[value]
if now_idx == last_idx:
last_idx += 1
else:
break
else:
answer += 1
return answer
깃허브 : https://buly.kr/2qZGkhJ
'코딩테스트 > programmers' 카테고리의 다른 글
| 프로그래머스 / 구현 / 주차 요금 계산 (0) | 2025.10.18 |
|---|---|
| 프로그래머스 / DP / 숫자 변환하기 (0) | 2025.10.17 |
| 프로그래머스 / 스택 / 택배상자 (0) | 2025.10.14 |
| 프로그래머스 / DP / 땅따먹기 (0) | 2025.10.14 |
| 프로그래머스 / 해시 / [3차] 압축 (0) | 2025.10.12 |