시작이 반

[백준] 20436번번 (python 파이썬) 본문

알고리즘/백준

[백준] 20436번번 (python 파이썬)

G_Gi 2021. 3. 30. 01:22
SMALL

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

 

구현 문제이다.

 

한글 자음에 해당하는 영어는 왼손으로 누르고

한글 모음에 해당하는 영어는 오른손으로 누른다.

즉 현재 누를 글자의 좌표를 왼손으로 누를지 오른손으로 누를지 정한다.

만약 e이기 때문에 왼손으로 누른다면 e의 해당 좌표를 구하고 이전 글자의 좌표와 거리를 계산한다.

누른 시간 1초 + 거리를 계산하며 결과값을 구해간다.

 

left, right = input().split()
strings = list(input())

keyboard = ['qwertyuiop', 'asdfghjkl', 'zxcvbnm']
mo = 'yuiophjklbnm'

xl, yl, xr, yr = None, None, None, None

for i in range(len(keyboard)):
    if left in keyboard[i]:
        xl = i
        yl = keyboard[i].index(left)

    if right in keyboard[i]:
        xr = i
        yr = keyboard[i].index(right)

time = 0
for string in strings:
    time += 1
    if string in mo:
        for i in range(len(keyboard)):
            if string in keyboard[i]:
                nx = i
                ny = keyboard[i].index(string)

                time += abs(nx - xr) + abs(ny - yr)
                xr = nx
                yr = ny
                break
    else:
        for i in range(len(keyboard)):
            if string in keyboard[i]:
                nx = i
                ny = keyboard[i].index(string)

                time += abs(nx - xl) + abs(ny - yl)
                xl = nx
                yl = ny
                break

print(time)



LIST