본문 바로가기

알고리즘

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

https://school.programmers.co.kr/learn/courses/30/lessons/160586?language=python3 

 

프로그래머스

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

programmers.co.kr

 

def solution(keymap, targets):
    answer = []
    obj = {}
    
    for i in range(len(keymap)):
        for j in range(len(keymap[i])):
            if keymap[i][j] not in obj:
                obj[keymap[i][j]] = j
            else:
                if obj[keymap[i][j]] > j:
                    obj[keymap[i][j]] = j
    
    for i in range(len(targets)):
        num = 0
        isTrue = True
        for j in range(len(targets[i])):
            if targets[i][j] not in obj:
                answer.append(-1)
                isTrue = False
                break
            else:
                num += obj[targets[i][j]]+1
        if isTrue:
            answer.append(num)
    return answer

문제는 자판을 통해 주어진 문자를 입력해야하는데 그 최소의 입력을 구하는 문제다

즉 keymap이

["ABA"]이면,

한번 누르면 A, 두번누르면 B, 세번 누르면 A가 된다

쿼티 키보드라고 생각하면 된다.

ㄱ에서 한번 더 누르면 ㅋ기 되고

ㄷ에서 한번 더 누르면 ㅌ이 되듯이 이 문제 또한 A에서 한번 더 누르면 B가되고 한번 더 누르면 다시 A가 된다는 문제다.

이문제는 문제만 이해한다면 어렵지 않게 풀 수 있다.

딕셔너리(obj)에 각 문자의 최소 입력을 담아

반복문을 통해 그 숫자를 더해나가면 된다.

'알고리즘' 카테고리의 다른 글

파이썬) 연구소  (0) 2023.06.04
파이썬)예산  (0) 2023.05.30
프로그래머스) 달리기 경주  (0) 2023.04.16
프로그래머스) 공원 산책  (0) 2023.03.24
프로그래머스)바탕화면 정리  (0) 2023.03.24