반응형
프로그래머스 문제
대충 만든 자판
https://school.programmers.co.kr/learn/courses/30/lessons/160586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1차 풀이 (실패)
일단 문자열에서 키맵에 포함된 알파벳 모두 찾기
그 중에서 가장 적게 눌러서 가능한 키를 position에 저장
가장 작은 값을 구해서 다 더하는 방법으로 생각해봤다
"""
키수 100개
특정 문자열 작성
최소 몇 번 눌러야 가능?
"""
def solution(keymap, targets):
answer = []
for i in targets:
tmp = 0
for alpha in i:
position = 100000
for index, k in enumerate(keymap):
if alpha in k and k.index(alpha) < position:
position = k.index(alpha) +1
#print(alpha,position)
if position == 100000:
position = -1
tmp += position
#print(alpha,position, tmp)
answer.append(tmp)
return answer
2차 풀이 (성공)
-1이 나오면 break를 통해 에러를 고칠 수 있었다
"""
키수 100개
특정 문자열 작성
최소 몇 번 눌러야 가능?
"""
def solution(keymap, targets):
answer = []
for i in targets:
tmp = 0
for alpha in i:
position = 1000
for index, k in enumerate(keymap):
if alpha in k and (k.index(alpha) < position and position > -1):
position = k.index(alpha) + 1
print(alpha, position)
if position == 1000:
tmp = -1
break
else:
tmp += position
answer.append(tmp)
return answer
반응형
'코딩 테스트 > Programmers' 카테고리의 다른 글
[Python] [Level 1] 공원 산책 (프로그래머스 문제) (0) | 2023.03.26 |
---|---|
[Python] [Level 1] 크기가 작은 부분 문자열 (0) | 2023.03.16 |
[Python] [Level 2] 시소 짝꿍 (Counter 함수 활용하기) (0) | 2023.03.14 |
[Python] [Level 2] 뒤에 있는 큰 수 찾기 (stack 활용하기) (0) | 2023.03.13 |
[Python] [Level 2] 호텔 대실 (lambda 함수 활용하기, 모두 분(分)으로 바꾸기) (0) | 2023.03.11 |