ror_coding

[Programmers] 대충 만든 자판 - 160586 본문

Algorithm/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