⚠️ 문제
https://school.programmers.co.kr/learn/courses/30/lessons/160586
🔐 풀이
keymap에 들어있는 키 배열을 확인하면서 입력 가능한 문자와 그 문자를 입력하기 위해 필요한 버튼 클릭 횟수를
key_dic 딕셔너리에 저장해둡니다.
이때, 같은 문자가 여러 번 할당된 경우가 있다고 했기 때문에 min 함수를 이용해 클릭의 최소 횟수를 저장합니다.
이후 target의 문자를 key_dic에서 찾아 모두 더하면 그것이 버튼 클릭 최소 횟수가 됩니다.
🧑🏻💻 코드
def solution(keymap, targets):
answer = []
key_dic = {}
# 입력 가능한 문자 확인
for keys in keymap:
# idx + 1 -> 문자를 입력하는데 필요한 클릭 횟수
for idx, key in enumerate(keys):
# 다른 버튼에서도 같은 문자를 입력할 수 있기 때문에 최소 횟수 저장
if key in key_dic:
key_dic[key] = min(key_dic[key], idx + 1)
else:
key_dic[key] = idx + 1
for target_str in targets:
target_cnt = 0
for target in target_str:
if target in key_dic:
target_cnt += key_dic[target]
else:
target_cnt = -1
break
answer.append(target_cnt)
return answer