반응형
https://school.programmers.co.kr/learn/courses/30/lessons/160586
hash map을 이용한 구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 정답 변수 answer선언 후 빈 배열로 초기화합니다.
2. 문자, 누르는 최소 횟수를 각각 key, value로 저장할 hash_map변수 char_press_map을 선언 후 빈 객체로 초기화합니다.
📔 풀이과정
1. 'A'부터 'Z'까지 순회하며 원소별 최소 클릭 횟수 구해줍니다. 해당값은 keymap에서 현 알파뱃에 해당하는 index값의 최솟값을 저장하면 됩니다. keymap에서 현재 알파뱃이 없다면 int max값을 저장합니다.
2. targets에 대해 loop를 수행하며 다음을 진행합니다. 2-1. 현 문자열에 대해 for loop를 수행하며 현 문자의 클릭 최솟값을 char_press_map에서 가져옵니다. 2-2. 만약 int max값이라면 -1을 저장해줍니다. 2-3. 이외의 경우에는 현 문자에 대한 최소 클릭 횟수를 누적해 더해줍니다. 2-4. answer에 누적된 최소 클릭 횟수를 추가해줍니다.
📔 정답 출력 | 반환
answer를 반환합니다.
📕 Code
📔 Python3
def solution(keymap, targets):
answer = []
char_press_map = {}
for i in range(26):
char = chr(i+65)
min_press = 0x3f3f3f3f
for keys in keymap:
if char in keys:
min_press = min(min_press, keys.index(char) + 1)
char_press_map[char] = min_press
for target in targets:
pressed = 0
for i in range(len(target)):
min_press = char_press_map[target[i]]
if min_press == 0x3f3f3f3f:
pressed = -1
break
pressed += min_press
answer.append(pressed)
return answer
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(Python3) - 프로그래머스(PCCE 기출문제): 2번 피타고라스의 정리 (1) | 2024.11.13 |
---|---|
(Python3) - 프로그래머스(PCCP 기출문제): 1번 / 분대 감기 (1) | 2024.11.11 |
(Python3) - 프로그래머스(연습문제): 공원 산책 (0) | 2024.11.10 |
(Python3) - 프로그래머스(연습문제): 달리기 경주 (0) | 2024.11.10 |
(Python3) - 프로그래머스(PCCE 기출문제): 9번 이웃한 칸 (0) | 2024.11.10 |