카테고리 없음

[프로그래머스][Python] 대충 만든 자판

은 딩 2023. 10. 10. 01:19

[프로그래머스][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