https://school.programmers.co.kr/learn/courses/30/lessons/160586
#틀린 풀이
def solution(keymap, targets):
answer = []
dic=dict()
for i in keymap:
temp=[]
for j in i:
dic[j]=i.find(j)
#print(dic)
for i in targets:
result=0
for j in i:
if j not in dic:
result=-1
else:
result+=(dic[j]+1)
answer.append(result)
return answer
위와 같이 풀었는데 예시 문제 3개만 통과하고 실제 테스트 했을때 아래와 같이 나온다.. 뭐가 문제일까?ㅠㅠ
=> 완전 이해했다.
내가 틀린 원인은 2가지였다.
1) 처음에 dict에다가 넣는 방식에서 틀린 것같다. 나는 find함수를 사용했었는데 key가 keytable에 없을 경우에 index+1만큼 값을 할당해주고, 존재한다면 min으로 가장 작은 값을 세팅해준다.
2) result를 더해줄때 if-else문을 쓸 필요없이 break를 사용해서 구해준다.
#옳은 풀이
def solution(keymap, targets):
answer = []
dic=dict()
for i in keymap:
for j in i:
if j in dic:
dic[j]=min(dic[j],i.find(j))
else:
dic[j]=i.find(j)
#print(dic)
for i in targets:
result=0
for j in i:
if j not in dic:
result=-1
break
result+=(dic[j]+1)
answer.append(result)
return answer
'코테 준비 > 프로그래머스' 카테고리의 다른 글
[level 2] 피로도 (0) | 2023.05.13 |
---|---|
[level 2] n^2 배열 자르기 (0) | 2023.05.13 |
[level 1] 덧칠하기 (0) | 2023.05.10 |
[level 1] 카드 뭉치 (0) | 2023.05.10 |
[level 1] 둘만의 암호 (0) | 2023.05.09 |