알고리즘
프로그래머스) 대충 만든 자판
1일1공부실천하자
2023. 5. 8. 20:59
https://school.programmers.co.kr/learn/courses/30/lessons/160586?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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)에 각 문자의 최소 입력을 담아
반복문을 통해 그 숫자를 더해나가면 된다.