https://school.programmers.co.kr/learn/courses/30/lessons/160586?language=python3
def solution(keymap, targets):
answer = []
obj = {}
for i in range(len(keymap)):
for j in range(len(keymap[i])):
if keymap[i][j] not in obj:
obj[keymap[i][j]] = j
else:
if obj[keymap[i][j]] > j:
obj[keymap[i][j]] = j
for i in range(len(targets)):
num = 0
isTrue = True
for j in range(len(targets[i])):
if targets[i][j] not in obj:
answer.append(-1)
isTrue = False
break
else:
num += obj[targets[i][j]]+1
if isTrue:
answer.append(num)
return answer
문제는 자판을 통해 주어진 문자를 입력해야하는데 그 최소의 입력을 구하는 문제다
즉 keymap이
["ABA"]이면,
한번 누르면 A, 두번누르면 B, 세번 누르면 A가 된다
쿼티 키보드라고 생각하면 된다.
ㄱ에서 한번 더 누르면 ㅋ기 되고
ㄷ에서 한번 더 누르면 ㅌ이 되듯이 이 문제 또한 A에서 한번 더 누르면 B가되고 한번 더 누르면 다시 A가 된다는 문제다.
이문제는 문제만 이해한다면 어렵지 않게 풀 수 있다.
딕셔너리(obj)에 각 문자의 최소 입력을 담아
반복문을 통해 그 숫자를 더해나가면 된다.
'알고리즘' 카테고리의 다른 글
파이썬) 연구소 (0) | 2023.06.04 |
---|---|
파이썬)예산 (0) | 2023.05.30 |
프로그래머스) 달리기 경주 (0) | 2023.04.16 |
프로그래머스) 공원 산책 (0) | 2023.03.24 |
프로그래머스)바탕화면 정리 (0) | 2023.03.24 |