반응형
풀이
알파벳마다 자판 상관 없이 가장 빨리 누를 수 있는 자판을 선택하는 것이 최선의 선택일 것이다.
따라서 주어진 자판을 순회하며 알파벳마다 가장 빨리 누를 수 있는 횟수를 딕셔너리에 기록한다. 이후, 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
반응형
'알고리즘 연습 > 구현, 문자열' 카테고리의 다른 글
[Lv.1 / 프로그래머스 / 파이썬] 둘만의 암호 (0) | 2024.07.09 |
---|---|
[Lv.2 / 프로그래머스 / 파이썬] 다음 큰 숫자 (0) | 2024.06.08 |
[🥈2 / 백준 5555 / 파이썬] 반지 (0) | 2024.04.12 |
[Lv.1 / 프로그래머스 / 파이썬] 가장 많이 받은 선물 (2024 KAKAO WINTER INTERNSHIP) (0) | 2024.03.24 |
[🥈5 / 백준 4108 / 파이썬] 지뢰찾기 (1) | 2024.01.07 |