본문 바로가기
프로그래머스/Python

[프로그래머스] 대충 만든 자판 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 9. 29.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 작성할 문자열을 하나씩 불러온다. for i in targets
  2. 해당 문자열을 입력할 수 있는지 결과를 저장할 리스트를 생성한다. result = list()
  3. 작성한 문자열을 문자 하나씩 불러온다. for j in i
  4. 각 문자를 입력할 경우를 저장할 리스트를 생성한다. li = list()
  5. 자판을 하나씩 불러오며 for k in keymap
  6. 만약 불러온 자판으로 해당 문자를 입력할 수 있으면 if (j in k)
  7. 몇 번 눌러야 하는지 결과를 저장한다. li.append(k.index(j) + 1)
  8. 가장 적게 누를 경우를 찾아야 하므로 바로 다음 자판으로 이동한다. continue
  9. 만약 저장한 누를 결과의 개수가 없다면(입력불가능) if (len(li) == 0)
  10. -1을 저장한다. result.append(-1)
  11. 문자를 누를 수 있다면 가장 적은 횟수로 누를 경우를 추가한다. else: result.append(min(li))
  12. 만약 문자열을 입력할 결과에 -1이 포함되어 있다면 if (-1 in result)
  13. 해당 문자열은 입력할 수 없으므로 -1을 추가한다. answer.append(-1)
  14. 그게 아니라면 입력 가능한 최소 횟수의 합을 추가한다. else: answer.append(sum(result))
반응형

3. 소스코드

def solution(keymap, targets):
    answer = []
    
    for i in targets:
        result = list()
        for j in i:
            li = list()
            for k in keymap:
                if (j in k):
                    li.append(k.index(j) + 1)
                    continue
            
            if (len(li) == 0):
                result.append(-1)
            else:
                result.append(min(li))
                
        if (-1 in result):
            answer.append(-1)
        else:
            answer.append(sum(result))
                
    return answer
728x90
반응형