반응형
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42860
2. 풀이
1) 'A'부터 올라가는 방향으로도 움직일 수 있고 'Z'에서 낮아지는 방향으로 움직일 수 있다.
2) 그 때 그때의 idx에 따라 왼쪽으로 가는 게 나을 수도 있고 오른쪽으로 가는 게 나을 수도 있다.
예: AZABAAAAAAAAAAAAAAAAAAXA 오른쪽으로 가서 Z B를 바꾸고 다시 왼쪽으로 와서 X를 고쳐야함.
파이썬 아스키코드: ord
print(chr(65))
print(ord('A'))
print(ord('d'))
A #65를 chr로 만듦
65 #'A'를 숫자로 만듦 65~90
100 #'d'를 숫자로 만듦 97~122
삼항연산자:
answer += le if le<ri else ri
idx += -1*le if le < ri else ri
연산결과 list에 담기:
change = [min(ord(c)-ord('A'), ord('Z')-ord(c)+1) for c in name]
list의 모든 원소 합하기:
if sum(change)==0:
가장 가까운 곳으로 옮겨가기:
le, ri = 1,1
while change[idx-le]==0:
le+=1
while change[idx+ri]==0:
ri+=1
idx += -1*le if le < ri else ri
3. 구현
def solution(name):
answer = 0
change = [min(ord(c)-ord('A'), ord('Z')-ord(c)+1) for c in name]
idx=0
while True:
# print(change, idx)
answer+=change[idx]
change[idx]=0
if sum(change)==0:
return answer
le, ri = 1,1
while change[idx-le]==0:
le+=1
while change[idx+ri]==0:
ri+=1
answer += le if le<ri else ri
idx += -1*le if le < ri else ri
return answer
참고
반응형
'PS > 프로그래머스' 카테고리의 다른 글
프로그래머스: 단어변환 (python, 파이썬 ) (0) | 2021.07.02 |
---|---|
프로그래머스 네트워크 python (0) | 2021.06.29 |
[BFS] 프로그래머스 게임 맵 최단거리 python (0) | 2021.06.18 |
[분할정복]프로그래머스 [카카오 인턴] 수식 최대화 python (0) | 2021.06.17 |
프로그래머스 예상대진표 python: Queue (0) | 2021.06.16 |
댓글