본문 바로가기
프로그래머스/1단계

(Python/LV1)대충만든자판

by windy7271 2023. 2. 26.
728x90
반응형

문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/160586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이:

from collections import defaultdict


def solution(keymap, targets):
    ans = []

    value = defaultdict(int)
    for key in keymap:
        for k,v in enumerate(key):
            if not value[v]:
                value[v] = k + 1
            else:
                value[v] = min(value[v], k+1)
    for target in targets:
        res = 0
        for t in target:
            if t not in value:
                res = -1
                break
            res += value[t]
        ans.append(res)
    return ans

 

dic 에 키 값이 없으면 에러가 난다, 이걸 개선한게 defaultdict

 

 

k 는 인덱스, 1번버튼을 몇번누르는지 2번버튼을 몇번 누르는지를 말한다,

각 알파벳별로 최솟눌러야하는 횟수가 들어간다.

 

두 번째 포문을 돌면서 찾는 알파벳이 있으면 value에서 찾아서 더해주고

없으면 -1 을 넣어주고 포문종료

리스트에 담아서 리턴

 

 

반응형

댓글