keymap targets result
["ABACD", "BCEFD"] ["ABCD","AABB"] [9, 4]
하나의 키를 계속 누르면 알파벳이 달라지는 맵핑을 이용해 targets을 치는데 걸리는 숫자를 출력한다. targets이 keymap에 없다면 -1을 출력한다.
난 dict의 에러를 try: except:를 이용해 처리했는데
def solution(keymap, targets):
answer = []
keydic = {}
for lst in keymap:
for i, ch in enumerate(lst):
try:
v = keydic[ch]
if keydic[ch] > i+1:
keydic[ch] = i+1
except:
keydic[ch] = i+1
continue
for lst in targets:
sum = 0
for ch in lst:
try:
sum += keydic[ch]
except:
sum = -1
break
answer.append(sum)
return answer
a=["AA"]
b=["B"]
solution(a,b)
실행1 if ch in dict else 실행2로 깔끔하게 하신분이 있었다. min()을 이용해 한줄에 작성
def solution(keymap, targets):
answer = []
hs = {}
for k in keymap:
for i, ch in enumerate(k):
hs[ch] = min(i + 1, hs[ch]) if ch in hs else i + 1
for i, t in enumerate(targets):
ret = 0
for ch in t:
if ch not in hs:
ret = - 1
break
ret += hs[ch]
answer.append(ret)
return answer