유형 : 구현

풀이 시간 : 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
복사했습니다!