반응형

문제를 분석해보면, 아래와 같은 흐름으로 석판 간 이동을 해야 한다:

첫 위치 -> I -> L -> O -> V -> E -> Y -> O -> N -> S -> E -> I

 

위 구간을 2가지로 쪼갤 수 있다

  1. 첫 위치 -> I 구간
    • 거리가 입력에 따라 값이 달라진다.
    • 입력이 'A'였다면, A -> I 이동 거리인 8.
  2. I -> L -> O -> V -> E -> Y -> O -> N -> S -> E -> I  구간
    • 입력에 상관없이 언제나 반드시 이동해야 하는 거리가 정해져있다. 그 값은 84.

 

파이썬에서 문자의 아스키 코드값을 반환해주는 ord() 함수를 사용하면 문자간 차이를 쉽게 구할 수 있다.

 

(정답 코드)

def get_distance(x, y):
    return abs(ord(x) - ord(y))


s = input("").upper()
d = get_distance(s, "I")
p = "ILOVEYONSEI"
for i, c in enumerate(p[:-1]):
    d += get_distance(p[i], p[i + 1])
print(d)

 

https://www.acmicpc.net/problem/25915

 

반응형

+ Recent posts