알고리즘 연습/구현, 문자열
[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
반응형