유형 : 구현
풀이 시간 : 10분
def solution(keymap, targets):
answer = []
keydict = dict([])
for key in keymap:
keylist = list(key)
for i in range(len(keylist)):
if keylist[i] not in keydict:
keydict[keylist[i]] = i+1
else:
if keydict[keylist[i]] > i+1:
keydict[keylist[i]] = i+1
for target in targets:
tlist = list(target)
tmp = 0
for i in range(len(tlist)):
if tlist[i] not in keydict:
tmp = -1
break
else:
tmp += keydict[tlist[i]]
answer.append(tmp)
return answer
오류 없이 한 번만에 맞혔다 ㅎㅎ
구현은 dict를 이용하였다.
우선 keydict를 만들고, keymap을 순환하며 해당 문자를 작성할 수 있는 가장 작은 횟수를 각 문자의 value로 하는 dict를 채웠다.
이후 target을 순회하며 각 target의 글자에 대해 keymap을 체크
-> keymap에 없는 경우 작성할 수 없으므로 -1
-> keymap에서 횟수를 찾아 횟수를 tmp에 더하기
enumerate
다른 사람들의 풀이에서 전부 이걸 사용했다.
enumerate를 사용하면, 간편하게 index와 list의 내용을 for 문으로 순회할 수 있다.
'프로그래머스 > Lv. 1' 카테고리의 다른 글
48. 체육복 (0) | 2024.07.16 |
---|---|
47. 완주하지 못한 선수 (0) | 2024.07.16 |
45. 둘만의 암호 (0) | 2024.07.16 |
44. 로또의 최고 순위와 최저 순위 (0) | 2024.07.16 |
43. [1차] 다트 게임 (0) | 2024.07.16 |