백준(Python) 18238 : ZOAC 2

문제

백준(Python) 18238 : ZOAC 2

풀이


# 18238
# 문자열 입력
N = input()

# 시간(거리) 계산
# 알파벳에 수를 부여하기 위해 ord() 함수 사용
# 총 알파벳 글자수 26개 => 최대 거리는 13임
# 거리끼리 뺀 후, 13보다 크면, 26에서 그 차이를 뺀 값이 최소 거리와 같음
# A와N =>13
# A와O =>14 = 12
# A와P =>15 = 11


mn_sum = 0
# A부터 시작점과의 거리
if abs(ord(N[0]) - ord("A")) <= 13:
    mn = abs(ord(N[0]) - ord("A"))
else:
    mn = 26 - abs(ord(N[0]) - ord("A"))
mn_sum += mn

# 이후 거리 계산
for i in range(len(N) - 1):  # 가까운 거리를 계산하기 위해, 26을 더한 수도 계산하였다.
    if abs(ord(N[i]) - ord(N[i + 1])) <= 13:
        mn = abs(ord(N[i]) - ord(N[i + 1]))
    else:
        mn = 26 - abs(ord(N[i]) - ord(N[i + 1]))
    mn_sum += mn


# 출력
print(mn_sum)



느낀 점

머리로 생각하려니까 너무 어려운 것 같다. 수학 문제 풀 듯이 메모할 필요가 있는 것 같다. 노트북 타이핑으로는 자유로움에서 한계가 있는 것 같으니 노트를 준비해보자!


CATEGORIES:

Tags:

No Responses

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다