Coding Test/Python
[Programmers] 대충 만든 자판 - 160586
ro_rdil_31
2024. 10. 14. 13:04
728x90
string 에서 특정 문자의 index를 출력하는 코드는 .find() 이다.
index()는 list에서만 적용되기 때문에 구별해서 써야한다!
Question
이 휴대폰 자판을 이용해 특정 문자열을 작성할 때, 키를 최소 몇 번 눌러야 그 문자열을 작성할 수 있는지 알아보고자 합니다.
1번 키부터 차례대로 할당된 문자들이 순서대로 담긴 문자열배열 keymap과 입력하려는 문자열들이 담긴 문자열 배열 targets가 주어질 때, 각 문자열을 작성하기 위해 키를 최소 몇 번씩 눌러야 하는지 순서대로 배열에 담아 return 하는 solution 함수를 완성해 주세요.
단, 목표 문자열을 작성할 수 없을 때는 -1을 저장합니다.
Code (After)
def solution(keymap, targets):
answer = []
for tg in targets:
time = 0
for t in tg:
tmp = [km.index(t) for km in keymap if t in km]
if tmp : time += min(tmp)+1
else : time = -1; break
answer.append(time)
return answer
Code (Before)
def solution(keymap, targets):
answer = []
for target in targets:
sum_, fail = 0, False
for t in target:
min_index = 999
for key in keymap:
min_index = key.find(t) if key.find(t) != -1 and key.find(t) <= min_index else min_index
if min_index == 999 : fail = True ; break
sum_ += min_index+1
if fail : answer.append(-1)
else : answer.append(sum_)
return answer
728x90