본문 바로가기
ps/programmers

대충 만든 자판

by choi-dev 2024. 2. 25.

https://school.programmers.co.kr/learn/courses/30/lessons/160586

 

프로그래머스

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

programmers.co.kr

 

내 코드

# 대충 만든 자판
# 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/160586

def solution(keymap, targets):
    """ 문제 분석
    keymap 배열 주어지고 각 문자열들마다 번호가 매겨져 있다.
    targets 배열은 입력해야할 문자열이다.
    """

    keymap_dict = dict()
    for i in range(len(keymap[0])):
        if keymap[0][i] in keymap_dict:
            continue
        else: 
            keymap_dict[keymap[0][i]] = i

    for i in range(1, len(keymap)):
        for j in range(len(keymap[i])):
            if keymap_dict.get(keymap[i][j]) is None:
                keymap_dict[keymap[i][j]] = j
            if keymap_dict[keymap[i][j]] > j:
                keymap_dict[keymap[i][j]] = j

    keymap_dict = dict_plus(keymap_dict)
    cnt = 0
    answer = []

    for target in targets:
        for i in range(len(target)):
            if keymap_dict.get(target[i]) is None:
                cnt = -1
                break
            cnt += keymap_dict[target[i]]
        answer.append(cnt)
        cnt = 0

    return answer


def dict_plus(dict_parameter):
    for key in dict_parameter:
        dict_parameter[key] += 1
    
    return dict_parameter

print(solution(["ABACD", "BCEFD"], ["ABCD","AABB"]))
print(solution(["AA"], ["B"]))

 

상대 코드

def solution(keymap, targets):
    answer = []
    hs = {}
    for k in keymap:
        for i, ch in enumerate(k):
            hs[ch] = min(i + 1, hs[ch]) if ch in hs else i + 1

    for i, t in enumerate(targets):
        ret = 0
        for ch in t:
            if ch not in hs:
                ret = - 1
                break
            ret += hs[ch]
        answer.append(ret)

    return answer

상대 코드를 보면서 enumerate에 대한 학습이 필요하다고 느껴졌다. 4번째줄(for k in ~) 부분에서 내가 작성한 코드보다 더 깔끔하면서 보기 쉽게 느껴진 것을 확인할 수 있었다.

 

8번째(for i, t in ~) 부분은 enumerate 학습을 하면 이해할 수 있을 것이라 판단된다.

'ps > programmers' 카테고리의 다른 글

덧칠하기  (0) 2024.02.25
바탕화면 정리  (0) 2024.02.25
공원 산책  (0) 2024.02.24
추억 점수  (0) 2024.02.24
달리기 경주  (0) 2024.02.24