<프로그래머스 문제풀이>
해답)
def solution(st):
res = 0
A_Count =0
A_Max = 0 # 가장 긴 A묶음의 A 수
A_StartIndex = 0
A_EndIndex = 0
vertical_count = 0
start = True
for i,v in enumerate(st):
# 연속해서 나온 A 횟수 검사
if v == 'A' and start == False :
A_Count += 1
if A_Count > A_Max:
A_Max = A_Count
A_EndIndex = i
else:
A_Count = 0
# 알파벳이 N보다 크면 위로넘기는게 빠르다
if ord(v) > ord('N'):
count = ord('Z')-ord(v)+1
else:
count = ord(v) - ord('A')
res += count
start = False
# 가장 긴 A묶음의 인덱스
A_StartIndex = A_EndIndex - A_Max + 1
# A가 시작이나 끝에있어서 안움직여도 되는경우
if A_StartIndex ==0 or A_EndIndex == len(st)-1:
res = res + len(st)-1
res -= A_Max # 이동안해도 되는 A만큼 빼준다.
# A묶음이 중간에있는경우 예) AZAAAZ
else:
if A_StartIndex <= (len(st)-A_EndIndex-1):
vertical_count = (A_StartIndex-1)*2 + (len(st)-A_EndIndex-1)
else:
vertical_count = (A_StartIndex-1) + (len(st)-A_EndIndex-1)*2
res +=min(vertical_count, len(st)-1)
return res
* ord 함수는 아스키코드를 돌려주는 함수!
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
728x90
'문제풀이 > Programmers' 카테고리의 다른 글
[프로그래머스💯] 코딩테스트 연습 > 스택/큐 > 탐욕법 (0) | 2019.12.29 |
---|---|
[프로그래머스💯] 코딩테스트 연습 > 탐욕법(Greedy) > 체육복 (2) | 2019.11.25 |
[프로그래머스💯] 코딩테스트 연습 > 스택,큐 > 기능개발 (0) | 2019.11.12 |
[프로그래머스💯] 코딩테스트 연습 > SUM, MAX, MIN > 동물 수 구하기 / COUNT문 (0) | 2019.11.03 |
[프로그래머스💯 / Python] 코딩테스트 연습 > 힙(Heap) > 더 맵게 / heapq 이용 (0) | 2019.10.30 |
댓글