반응형
https://school.programmers.co.kr/learn/courses/30/lessons/160586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(keymap, targets):
mapping = {}
for s in range(len(keymap)):
for i, key in enumerate(keymap[s]):
if key not in mapping:
mapping[key] = mapping.get(key, i+1)
mapping[key] = min(mapping.get(key), i+1)
result = []
for target in targets:
sum_value = 0
for c in target:
if c not in mapping:
result.append(-1)
break
sum_value += mapping[c]
else:
result.append(sum_value)
return result
먼저 keymap
을 enumerate
함수와 함께 사용하여 각 문자 key
를 인덱스와 함께 mapping
이라는 딕셔너리에 저장합니다.
mapping
딕셔너리에key
가 없다면 현재 인덱스에 + 1을 하여 저장합니다.
key
가 존재하는 경우에는 해당 key
에 저장되어 있는 값과 i + 1
을 비교하여 더 작은 값을 저장합니다.
min
함수를 사용하였고 최소값을 저장하여 문제에서 요구한 최소 몇 번 눌러야 하는지를 계산할 수 있게 해줍니다.
그런 다음 targets
의 각 문자열(target
)을 반복하여 각 문자 c
가 mapping
딕셔너리에 있는지 확인하고
있으면 mapping
딕셔너리에서 c
를 찾아서 sum_value
에 더합니다.
없다면 result
에 -1
을 추가합니다.
mapping
에c
가 없다면 목표 문자열을 작성할 수 없는 경우입니다.
sum_value
를 구했다면 result
에 저장하고 결과를 반환합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 백준 영단어 암기는 괴로워 파이썬(Python) (0) | 2023.02.28 |
---|---|
[코딩테스트] 백준 비밀번호 발음하기 파이썬(Python) (0) | 2023.02.27 |
[코딩테스트] 백준 안전 영역 파이썬(Python) (0) | 2023.02.25 |
[코딩테스트] 프로그래머스 가장 먼 노드 파이썬(Python) (0) | 2023.02.23 |
[코딩테스트] 프로그래머스 주차 요금 계산 파이썬(Python) (0) | 2023.02.23 |