오랑우탄의 반란
프로그래머스 | 대충 만든 자판 (파이썬) 본문
반응형
오늘도 오랑이는 문제를 풉니다.
대충 만든 자판
풀이 과정
- keymap 글자들의 최소 인덱스+1 목록
- targets 단어의 각 글자에 대해 위 목록에 있는지 확인
- 있으면 인덱스+1 answer에 append
- 없으면 -1
우선 keymap의 인덱스 목록을 저장해줄 딕셔너리를 만듭니다.
def solution(keymap, targets):
answer = []
key_dict = {} #key_dict에 각 글자별 최소 인덱스값 저장
for i in keymap:
for idx, char in enumerate(i): #keymap 단어에서 각 글자의 인덱스와 글자 짝에 대해
if char not in key_dict:
key_dict[char] = (idx+1) #글자가 딕셔너리에 없으면 인덱스+1 추가
else:
key_dict[char] = min(key_dict[char],(idx+1))
#있으면 기존 숫자와 새로운 인덱스+1 중 최솟값 추가
#즉 같은 글자일 경우 최소 인덱스값이 들어감
만들어진 딕셔너리에 대해 targets 의 글자들과 매칭이 되는지 확인해줍니다.
for i in targets: #targets 글자가 key_dict에 있는지 확인
count = 0
for j in i:
if j not in key_dict:
count = -1 #없을 경우 -1 반환하고 반복문 끊기
break
count += key_dict[j] #그 외의 경우는 인덱스값 더해주기
answer.append(count)
최종 코드
def solution(keymap, targets):
answer = []
key_dict = {}
for i in keymap: #key_dict에 각 글자별 최소 인덱스값 저장
for idx, char in enumerate(i):
if char not in key_dict:
key_dict[char] = (idx+1)
else:
key_dict[char] = min(key_dict[char],(idx+1))
for i in targets: #targets 글자가 key_dict에 있는지 확인
count = 0
for j in i:
if j not in key_dict:
count = -1
break
count += key_dict[j]
answer.append(count)
return answer
오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~
반응형
'PYTHON > 프로그래머스' 카테고리의 다른 글
프로그래머스 | 둘만의 암호 (파이썬) 알파벳 순환 (0) | 2024.08.19 |
---|---|
프로그래머스 | 문자열 나누기 (파이썬) (0) | 2024.08.14 |
프로그래머스 | 체육복 (파이썬) 그리디, SET 차집합 (0) | 2024.08.12 |
프로그래머스 | 숫자 짝꿍 (파이썬) SET 교집합 (0) | 2024.08.08 |
프로그래머스 | 옹알이(2) (파이썬) permutation, 정규표현식 fullmatch (0) | 2024.08.07 |