https://school.programmers.co.kr/learn/courses/30/lessons/160586?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이:
자판의 인덱스 별로, 배열을 만든다.
예를들어, keymap이 ["ABACD", "BCEFD"] 라면,
[["A","B"], ["B","C"], ["A","E"], ["C","F"], ["D","D"]] 이렇게 인덱스별로 나눠준다.
그 뒤 순회하며, 존재하는지 존재하지 않는지 확인 후, 존재한다면 인덱스를 더해고, 마지막에 answer에 넣어주면 된다
def solution(keymap, targets):
answer = []
maxN = 0;
# 한 키당 최대 들어가는 길이 구하기
for i in range(len(keymap)):
maxN = max(len(keymap[i]), maxN)
# 인덱스 별 배열 만들기
arr = [[]for _ in range(maxN)]
# 인덱스 별 배열에 값 추가
for i in range(len(keymap)):
for j in range(len(keymap[i])):
arr[j].append(keymap[i][j]);
# 빠른 키 구하고, answer 에 입력
for i in range(len(targets)):
cnt = 0
noCount = False;
for j in range(len(targets[i])):
for k in range(len(arr)):
if noCount == True: break
if targets[i][j] in arr[k]:
cnt += k +1;
break
elif k == len(arr) -1:
cnt = 0;
noCount = True;
if cnt == 0:
answer.append(-1)
else:
answer.append(cnt)
return answer
'Algorithm > programmers' 카테고리의 다른 글
[파이썬] programmers: 바탕화면 정리 (0) | 2024.01.25 |
---|---|
[파이썬] programmers: 공원 산책 (0) | 2024.01.25 |
[파이썬]PCCP 기출문제 2번/ 석유 시추 (0) | 2024.01.09 |
[파이썬]programmers: [PCCP 기출문제]1번 / 붕대감기 (1) | 2024.01.08 |
[파이썬]programmers: 게임 맵 최단거리 (0) | 2023.03.31 |
댓글