코테 준비/프로그래머스

[level 1] 대충 만든 자판

쿠쿠*_* 2023. 5. 10. 16:28

https://school.programmers.co.kr/learn/courses/30/lessons/160586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

#틀린 풀이
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