알고리즘 연습/구현, 문자열

[Lv.1 / 프로그래머스 / 파이썬] 대충 만든 자판

김세진 2024. 5. 15. 03:29
반응형

 

 

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

풀이

 

알파벳마다 자판 상관 없이 가장 빨리 누를 수 있는 자판을 선택하는 것이 최선의 선택일 것이다.

따라서 주어진 자판을 순회하며 알파벳마다 가장 빨리 누를 수 있는 횟수를 딕셔너리에 기록한다. 이후, targets의 문자열을 순회하며 딕셔너리를 이용해 문자열을 입력할 수 있는 가장 짧은 입력 횟수를 구한다.

 

def solution(keymap, targets):
    # 알파벳별 가장 빨리 입력할 수 있는 횟수 계산
    d = dict()
    for keys in keymap:
        for key in keys:
            if key in d:
                d[key] = min(keys.index(key) + 1, d[key])
            else:
                d[key] = keys.index(key) + 1
    
    # 정답 도출
    ans = []
    for target in targets:
        cnt = 0
        for s in target:
            if s not in d:
                ans.append(-1)
                break
            
            cnt += d[s]
        else:
            ans.append(cnt)
        
    return ans

 

 

 

 

 

반응형