반응형
해당 문제는 프로그래머스 기준 Level 1에 해당하는 문제다.
풀이는 2중 for문을 통해서 먼저 딕셔너리를 생성한다. 이때 자판 패드가 가장 가까운 번호를 기준으로 key와 value를 지정하면 된다.
from collections import defaultdict
def solution(keymap, targets):
answer = []
inform = defaultdict(list)
for key in keymap:
for i, k in enumerate(key):
if inform[k] == []:
inform[k] = i+1
elif inform[k] != [] and (i+1) < inform[k]:
inform[k] = i+1
for target in targets:
values = 0
for t in target:
if inform[t] == []:
values = -1
break
values += inform[t]
answer.append(values)
return answer
그런 다음, target을 기준으로 자판을 누르는 횟수가 가장 낮은 값으로 딕셔너리를 구성한 값을 바탕으로 합계를 더해주면 된다. if 문을 설정해두어서 키패드가 없는 경우에는 -1을 반환하여 속도를 조금 향상시켰다.
'Python > Algorithm' 카테고리의 다른 글
[프로그래머스] 구명보트 - Python (0) | 2023.09.16 |
---|---|
[프로그래머스] 둘만의 암호 - Python (2) | 2023.09.08 |
[프로그래머스] 메뉴 리뉴얼 - Python (0) | 2023.09.05 |
[프로그래머스] 두 큐 합 같게 만들기 - Python (0) | 2023.09.05 |
[프로그래머스] 1차 다트 게임 - Python (0) | 2023.09.03 |