2020년 12월, 세 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 빠르게 ZOAC를 알리려 한다.
하지만 안타깝게도 성우는 독수리타법이다!
독수리 타법이란 양 손의 검지손가락만을 이용해 타자를 치는 타법이다.
성우는 한글 자음 쪽 자판은 왼손 검지손가락으로 입력하고, 한글 모음 쪽 자판은 오른손 검지손가락으로 입력한다.
a의 좌표가 (x1, y1)이고, b의 좌표가 (x2, y2)일 때, a에 위치한 성우의 손가락이 b로 이동하는 데에는 a와 b의 택시 거리 |x1-x2|+|y1-y2| 만큼의 시간이 걸린다.
각 키를 누르는 데에는 1의 시간이 걸린다.
성우는 두 손을 동시에 움직일 수 없다.
성우가 사용하는 키보드는 쿼티식 키보드이며, 아래 그림처럼 생겼다.
첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다.
그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의 길이는 최대 100자이다. 빈 문자열은 주어지지 않는다.
N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 출력한다.
- 모음 저장
- 이미 왼손이나 오른손이 그 위치에 있는경우
- 아닌 경우 각각의 위치 별 x, y위치를 입력받자.
# 문자의 x, y 위치를 반환해준다.
def find_loc(word):
keyboard = [
['q','w','e','r','t','y','u','i','o','p'],
['a','s','d','f','g','h','j','k','l'],
['z','x','c','v','b','n','m']
]
for i, key in enumerate(keyboard):
if word in key:
y = i
x = key.index(word)
return x, y
sl, sr = map(str, input().split())
data = input()
result = 0
# 모음 저장
consonant = "qwertasdfgzxcv"
for d in data:
# 이미 왼손이나 오른손이 그 위치에 있는경우
if sl == d or sr == d:
result += 1
# 아닌 경우 각각의 위치 별 x, y위치를 입력받자.
else:
slx, sly = find_loc(sl)
srx, sry = find_loc(sr)
dx, dy = find_loc(d)
# 모음이라면 왼쪽이 이동한다.
if d in consonant:
result += abs(slx-dx) + abs(sly-dy) + 1
sl, slx, sly = d, dx, dy
# 자음이라면 오른쪽이 이동한다.
else:
result += abs(srx-dx) + abs(sry-dy) + 1
sr, srx, sry = d, dx, dy
print(result)