프로그래머스 LV1 - 대충 만든 자판
내 풀이
def solution(keymap, targets):
answer = []
for target in targets:
a = list(target)
b = 0
for alpha in a:
keys = []
for key in keymap:
if alpha in key:
keys.append(key.find(alpha))
if keys:
b += min(keys) + 1
else:
b = -1
break
answer.append(b)
return answer
다른 풀이
def solution(keymap, targets):
result = [] # 결과를 저장할 리스트
alp_key = dict() # 각 문자에 대한 키 정보를 저장할 딕셔너리
for row in keymap:
for idx, alp in enumerate(row):
if (alp in alp_key) and (idx+1) > alp_key[alp]:
continue
# 문자와 해당 키의 순서를 딕셔너리에 저장
alp_key[alp] = idx + 1
for row in targets:
total_index = 0 # 문자열을 만들기 위한 총 키 누름 횟수
for alp in row:
# 문자가 딕셔너리에 있으면 해당 키의 순서를 더함
if alp in alp_key:
total_index += alp_key[alp]
else:
total_index = -1
break
# 결과 리스트에 각 문자열을 만들기 위한 키 누름 횟수 추가
result.append(total_index)
return result # 결과 반환
풀이 해석
Dictionary 를 이용한 풀이이며 keymap의 원소에서 key = 알파벳, value = 맨처음의 순서로 가져옴으로써 미리 dict에 저장해놓았다. 그 뒤 targets를 읽으면서 dict에 저장된 value값을 더해 최종적으로 키 누름 횟수를 알아내었다.
배울 점
dict를 활용해 key value 값을 지정해놓고 이후에 이용하는 사고
댓글남기기