dic
에 저장한다.target
문자열의 최소입력횟수 구하기dic
에서 가져온 최소 횟수를 더하여 결과값을 만든다. dic
{"A": 0}
def solution(keymap, targets):
dic = {"A":0, "B":0, "C":0, "D":0, "E":0, "F":0, "G":0, "H":0, "I":0, "J":0, "K":0, "L":0, "M":0, "N":0, "O":0, "P":0, "Q":0, "R":0, "S":0, "T":0, "U":0, "V":0, "W":0, "X":0, "Y":0, "Z":0}
answer = []
# 알파벳마다 최소 몇번 눌러야 하는지 딕셔너리에 저장
for str in keymap:
for idx, char in enumerate(str):
if dic[char] == 0:
dic[char] = idx + 1
else:
dic[char] = min(dic[char], idx + 1)
# target 문자열 최소 몇번 눌러야 하는지 계산하기
for target in targets:
sum = 0
for char in target:
if dic[char] == 0:
answer.append(-1)
break
else:
sum += dic[char]
else:
answer.append(sum)
return answer
def solution(keymap, targets):
answer = []
dic = {}
for k in keymap:
for i, ch in enumerate(k):
dic[ch] = min(i + 1, dic[ch]) if ch in dic else i + 1
for target in targets:
sum = 0
for ch in target:
if ch not in dic:
sum = - 1
break
sum += dic[ch]
answer.append(sum)
return answer
먼저 dic
을 직접 선언해두고 시작함. 모든 알파벳을 직접 0으로 초기화시킴.
dic
에 있는 알파벳이면 값을 업데이트 시키고, dic
에 없다면 새로 추가하며 딕셔너리를 완성시킨다.
in
연산자를 사용하여 dic에 있는지 없는지 확인한다.
딕셔너리에서의 in
연산자를 생각하지 못해 모든 알파벳을 직접 선언하는 방식으로 구현하였다. 만약, 테스트 상황에서라면 시간을 아껴야 하므로 직접 하나하나 선언하기보다는 후자의 방법으로 하는 것이 맞을것 같다.