프로그래머스 코딩테스트/Python

[프로그래머스] 대충 만든 자판 Python

Coding-Su 2024. 7. 5. 23:18
728x90

제목

[프로그래머스] 대충 만든 자판

정답

def solution(keymap, targets):
    answer = []
    count = 0
    alpha = {'A': 0, 'B': 0, 'C':0,'D':0,'E':0,'F':0,'G':0,'H':0,'I':0,'J':0,'K':0,'L':0,'M':0,'N':0,'O':0,'P':0,'Q':0,'R':0,'S':0,'T':0,'U':0,'V':0,'W':0,'X':0,'Y':0,'Z':0}
    
    for i in range(0, len(keymap)):
        for j in range(0, len(keymap[i])):
            if alpha[keymap[i][j]] == 0:
                alpha[keymap[i][j]] = j + 1
            else:
                if alpha[keymap[i][j]] > j + 1:
                    alpha[keymap[i][j]] = j+1
                    
    for i in range(0, len(targets)):
        flag = True
        for j in range(0, len(targets[i])):
            if alpha[targets[i][j]] == 0:
                flag = False
            else:
                count += alpha[targets[i][j]]
        if flag == False:
            answer.append(-1)
        else:
            answer.append(count)
        count = 0
                
    return answer

사실 처음에는 4중 for문과 if문을 섞어서 문제를 풀려고 했었습니다. keymap에 for문 2개, targets에 for문 2개를 사용했기 때문입니다.

하지만 4중 for문은 계산하는데 너무 많은 시간이 소요되어 이중 for문으로 keymap에 있는 모든 문자중에 빠른 숫자를 alpha에 저장해줍니다.

그 다음 다음 for문에서 targets에서 필요한 문자를 alpha에서 찾아서 더하여 답을 구해주었습니다.

728x90