❓ 문제
Summer/Winter Coding(~2018) - 스킬트리
🛎️ 아이디어
1. skill_trees 배열에서 하나씩 꺼내온다.
2. 해당 배열에서 find를 사용하여 skill의 각각의 원소에 해당하는 인덱스를 가져온다.
3. 만약 find의 리턴 값이 -1이라면 (해당 배열에 값이 없는 경우) skills의 길이를 넣어준다.
a. -1이 앞에 있는 경우 미통과이기 때문에 순서를 뒤바꿀 수 있는 큰 값을 넣어주는 것이다.
4. 정렬했을 때 순서가 바뀌지 않는다면 통과!
💻 풀이
def solution(skill, skill_trees):
answer = 0
for skills in skill_trees:
token_index_list = list(map(lambda x: skills.find(x), skill))
token_index_list = list(map(lambda x: len(skills) if x == -1 else x, token_index_list))
if token_index_list == sorted(token_index_list):
answer += 1
return answer
print(solution("CBD", ["BACDE", "CBADF", "AECB", "BDA"]))
"""
token_index_list 결과가 다음과 같으면,
[2, 0, 3] -> 미통과
[0, 1, 3] -> 통과
[2, 3, -1] -> 통과
[-1, 0, 1] -> 미통과
-1이 있는 두 가지를 구별할 방법은 -1인 경우 큰 값을 넣어주기!
"""
'Algorithm | Language > Python' 카테고리의 다른 글
[programmers/Lv.2] 행렬 테두리 회전하기 (0) | 2023.02.23 |
---|---|
[programmers/Lv.2] 후보키 (0) | 2023.02.23 |
[programmers/Lv.2] [3차] 방금그곡 (0) | 2023.02.23 |
[Python] 1 to 50 게임 매크로 (0) | 2020.06.02 |
[Python] 네이버 웹툰 크롤링 (0) | 2020.05.29 |