targets에 있는 문자열을 하나씩 보며 keymap에 포함되어 있는지를 확인해야겠다 생각했다.
예를 들어 A는 ABACD, BCEFD 중에 첫 번째 keymap에 속해있고 1번만 누르면 된다. B는 두 keymap에 모두 속해있지만 두 번재 keymap에서는 1번만 누르면 된다. A는 1번, B도 1번 이렇게 총 2번만 누르면된다.
예외사항의 경우는 keymap에 없는 것인데 target AC는 keymap BC에 C는 속해있지만 A는 없기 때문에 -1을 출력해야 한다.
def solution(keymap, targets):
answer = []
for i in range(len(targets)):
cnt = 0 # 몇 번 눌렀는지
temp = -1 # 눌린 index를 잠시 저장하는 변수
for j in range(len(targets[i])):
minN = 999 # 더 적게 누른 곳
for key in keymap:
if targets[i][j] in key:
temp = key.index(targets[i][j])
else:
temp = 9999
minN = min(temp, minN) # 더 적게 누른 곳 저장
if minN == -1 or minN == 999:
cnt = -1
break
else:
cnt += minN + 1 # index는 0부터 시작하니 +1
answer.append(cnt)
return answer