[프로그래머스][Python] 대충 만든 자판
https://school.programmers.co.kr/learn/courses/30/lessons/160586#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
아이디어
defaultdict로 딕셔너리 만든 후 알파벳이 나올 수 있는 최소 횟수를 저장하였다.
그 후에 targets를 돌면서 몇 번 눌러야 만들 수 있는지 저장하도록 하면 된다
제대로 푼 것 같은데 틀렸다고 나왔다
그 반례
keymap : ["ABCE"]
targets : ["ABDE"]
>> 답 : [-1]
틀렸던 이유는 만들 수 없는 게 나오면 answer에 -1을 넣어줘야 하는데 0을 넣고 있었다
코드
from collections import defaultdict
def solution(keymap, targets):
answer = []
dict = defaultdict(int)
# 나올 수 있는 알파벳 최소 횟수 저장
for i in range(len(keymap)):
for idx, j in enumerate(keymap[i]):
if dict[j] > idx + 1 or dict[j] == 0:
dict[j] = idx + 1
# 몇 번 눌러야 하는지 저장
for i in range(len(targets)):
result = 0
for j in range(len(targets[i])):
result += dict[targets[i][j]]
if dict[targets[i][j]] == 0: # 만들 수 없다면!
result = -1
break
answer.append(result)
return answer