프로그래머스/Python
[프로그래머스] 대충 만든 자판 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 9. 29. 19:46
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
- 작성할 문자열을 하나씩 불러온다. 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)
- -1을 저장한다. result.append(-1)
- 문자를 누를 수 있다면 가장 적은 횟수로 누를 경우를 추가한다. else: result.append(min(li))
- 만약 문자열을 입력할 결과에 -1이 포함되어 있다면 if (-1 in result)
- 해당 문자열은 입력할 수 없으므로 -1을 추가한다. answer.append(-1)
- 그게 아니라면 입력 가능한 최소 횟수의 합을 추가한다. 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
반응형