반응형
https://school.programmers.co.kr/learn/courses/30/lessons/160586#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
문제를 풀면서 느낀점은 이대로 코드를 작성하게 되면 최대 시간복잡도가 엄청날텐데 이게 맞나 싶었다. 테스트 케이스가 널널해서 통과가 가능한 문제 였다.
targets 요소의 문자를 기준으로 keymap 요소의 문자를 탐색해서 같은 문자가 가장 먼저 등장한 위치를 전부 더해서 결과를 만드는게 핵심이다.
def solution(keymap, targets):
answer = []
for target in targets:
total = 0
for t_char in target:
idx = 101
for key in keymap:
# 문자가 keymap[i]에 포함 돼있을 때 해당 문자의 인덱스 최소 값 파싱
if t_char in key:
idx = min(idx, key.index(t_char) + 1)
# 문자가 존재 한다면 값을 더함
if idx < 101:
total += idx
# 문자가 존재 하지 않다면 -1
else:
total = -1
break
# 결과 값 삽입
answer.append(total)
return answer
'프로그래머스 > lv.1' 카테고리의 다른 글
[PCCE 기출문제] 9번 / 이웃한 칸 (0) | 2024.01.27 |
---|---|
완주하지 못한 선수 (0) | 2024.01.27 |
체육복 (1) | 2024.01.26 |
숫자 짝꿍 (0) | 2024.01.26 |
로또의 최고 순위와 최저 순위 (0) | 2024.01.25 |