728x90
제목
정답
def solution(keymap, targets):
answer = []
count = 0
alpha = {'A': 0, 'B': 0, 'C':0,'D':0,'E':0,'F':0,'G':0,'H':0,'I':0,'J':0,'K':0,'L':0,'M':0,'N':0,'O':0,'P':0,'Q':0,'R':0,'S':0,'T':0,'U':0,'V':0,'W':0,'X':0,'Y':0,'Z':0}
for i in range(0, len(keymap)):
for j in range(0, len(keymap[i])):
if alpha[keymap[i][j]] == 0:
alpha[keymap[i][j]] = j + 1
else:
if alpha[keymap[i][j]] > j + 1:
alpha[keymap[i][j]] = j+1
for i in range(0, len(targets)):
flag = True
for j in range(0, len(targets[i])):
if alpha[targets[i][j]] == 0:
flag = False
else:
count += alpha[targets[i][j]]
if flag == False:
answer.append(-1)
else:
answer.append(count)
count = 0
return answer
사실 처음에는 4중 for문과 if문을 섞어서 문제를 풀려고 했었습니다. keymap에 for문 2개, targets에 for문 2개를 사용했기 때문입니다.
하지만 4중 for문은 계산하는데 너무 많은 시간이 소요되어 이중 for문으로 keymap에 있는 모든 문자중에 빠른 숫자를 alpha에 저장해줍니다.
그 다음 다음 for문에서 targets에서 필요한 문자를 alpha에서 찾아서 더하여 답을 구해주었습니다.
728x90
'프로그래머스 코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 햄버거 만들기 Python (0) | 2024.07.09 |
---|---|
[프로그래머스] 둘만의 암호 Python (0) | 2024.07.08 |
[프로그래머스] 문자열 나누기 Python (0) | 2024.07.05 |
[프로그래머스] 숫자 짝꿍 Python (0) | 2024.07.05 |
[프로그래머스] 체육복 Python (1) | 2024.07.05 |