728x90
반응형
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
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 가장 큰 수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.07 |
---|---|
[프로그래머스] 택배상자 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.05 |
[프로그래머스] 단속카메라 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.03 |
[프로그래머스] 2개 이하로 다른 비트 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.01 |
[프로그래머스] 2 x n 타일링 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.27 |
[프로그래머스] 숫자 게임 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.25 |
[프로그래머스] 문자열 나누기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.23 |
[프로그래머스] 숫자 변환하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.21 |