본문 바로가기
Algorithm/programmers

[파이썬] 프로그래머스: 대충 만든 자판

by 갈잃자 2024. 2. 6.

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

 

프로그래머스

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

programmers.co.kr


풀이:

 

자판의 인덱스 별로, 배열을 만든다.

예를들어, keymap이 ["ABACD", "BCEFD"] 라면,

[["A","B"], ["B","C"], ["A","E"], ["C","F"], ["D","D"]] 이렇게 인덱스별로 나눠준다.

 

그 뒤 순회하며, 존재하는지 존재하지 않는지 확인 후, 존재한다면 인덱스를 더해고, 마지막에 answer에 넣어주면 된다

def solution(keymap, targets):
    answer = []
    maxN = 0;
    # 한 키당 최대 들어가는 길이 구하기     
    for i in range(len(keymap)):
        maxN = max(len(keymap[i]), maxN)
    # 인덱스 별 배열 만들기
    arr = [[]for _ in range(maxN)]

    # 인덱스 별 배열에 값 추가
    for i in range(len(keymap)):
        for j in range(len(keymap[i])):
            arr[j].append(keymap[i][j]);
    
    # 빠른 키 구하고, answer 에 입력
    for i in range(len(targets)):
        cnt = 0
        noCount = False;
        for j in range(len(targets[i])):
            for k in range(len(arr)):
                if noCount == True: break
                if targets[i][j] in arr[k]:
                    cnt += k +1;
                    break
                elif k == len(arr) -1:
                    cnt = 0;
                    noCount = True;
        if cnt == 0:
            answer.append(-1)
        else:
            answer.append(cnt)
            
    return answer

댓글