본문 바로가기
코딩 테스트 연습

[알고리즘] 프로그래머스 - 대충 만든 자판

by 코드뭉치 2023. 6. 1.

대충 만든 자판

 

1. 구해야 하는 것
    각 문자열을 작성하기 위해 키를 최소 몇번씩 눌러야 하는지
    작성할 수 없다면 -1
2. 1을 구하기 위해 필요한 것
    각각의 알파벳 별로 최소 누르는 횟수를 담은 딕셔너리를 만든다.
        index번호끼리 비교해서 더 작은것을 밸류로 가져가기 > min
    keymap의 원소별로 돌아가면서 target의 인덱스를 찾을 방법
        enumerate로 인덱스랑 같이 값을 빼옴

변수가 너무 많아 헷갈려서 한글로 코딩해봤다.

enumerate 사용해서 딕셔너리에 알파벳별로 최소 눌러야하는 횟수를 저장해줬고,

해당 딕셔너리에서 글자마다 찾아서 횟수를 더해주는 방식

최소누르는횟수 = {} # 각각의 알파벳을 얻기 위해 가장 빠른 입력 횟수
for k in keymap:
    for i, k in enumerate(k, 1): # 인덱스 넘버기 때문에 1부터 시작하게 
        if k not in 최소누르는횟수: # k라는 키가 없다면 value를 i로 해서 딕셔너리에 추가
            최소누르는횟수[k] = i
        else: # k가 이미 있다면 더 작은 밸류로
            최소누르는횟수[k] = min(최소누르는횟수[k], i)
답 = [] # 문자별로 누른 횟수가 들어갈 리스트
for target in targets:
    누른횟수 = 0  
    for 글자 in target:
        if 글자 not in 최소누르는횟수: # 눌러도 입력할 수 없다면 바로 -1을 넣고 break
            누른횟수 = -1
            break
        else:
            누른횟수 += 최소누르는횟수[글자]
    답.append(누른횟수)
print(답)

 

댓글