Kim Seon Deok

[백준] 20436 ZOAC 3 본문

python/Algorithm

[백준] 20436 ZOAC 3

seondeok 2022. 1. 22. 00:43

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

 

20436번: ZOAC 3

첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의

www.acmicpc.net

 

 

sl,sr = list(input().split())
 
s =list(map(str,input()))
 
 
left = [['q','w','e','r','t'],
        ['a','s','d','f','g'],
        ['z','x','c','v','']]
right = [['','','','','','y','u','i','o','p'],
        ['','','','','','h','j','k','l'],
        ['','','','','b','n','m','','']]
 
 
# 왼손 좌표 찾기
def findleft(l_hand):
    
    for i in range(len(left)): # 행 > y좌표
        for j in range(len(left[i])):  # 열 > x좌표
            if left[i][j] == l_hand:
                
                return j,i
    
            
 
 
# 오른손 좌표 찾기
def findright(r_hand):
    
    for i in range(len(right)): # 행 > y좌표
        for j in range(len(right[i])):  # 열 > x좌표
            if right[i][j] == r_hand:
                
                return j,i
 
 
sleft=[]  # 왼손에 해당하는 문자를 저장
sright=[]  #오른손에 해당하는 문자를 저장
for k in range(0,len(s)):
    for i in range(0,len(left)):
            if s[k] in left[i]:
                sleft.append(s[k])
       
for k in range(0,len(s)):
    for i in range(0,len(right)):
        if s[k] in right[i]:
            sright.append(s[k])
sleft.insert(0,sl)
sright.insert(0,sr)
 
 
l_location=[] # 왼손 키들 각각의 위치
for i in range(0,len(sleft)):
    a = findleft(sleft[i])
    l_location.append(a)
 
 
l_time = [] # 왼손) 키들 각각의 이동 시간
for i in range(0,len(l_location)-1):
    t = abs(l_location[i][0]-l_location[i+1][0]) + abs(l_location[i][1]-l_location[i+1][1])
    l_time.append(t)
 
 
r_location = [] #오른손 키들 각각의 위치
for i in range(0,len(sright)):
    a = findright(sright[i])
    r_location.append(a)
 
r_time = []  # 오른손) 키들 각각의 이동 시간
for i in range(0,len(r_location)-1):
    t = abs(r_location[i][0]-r_location[i+1][0]) + abs(r_location[i][1]-r_location[i+1][1])
    r_time.append(t)
 
l_sum = 0  # 왼손 총시간
for i in range(len(l_time)):
    l_sum = l_sum +  l_time[i]
 
r_sum = 0  # 오른손 총 시간
for i in range(len(r_time)):
    r_sum = r_sum + r_time[i]
 
final_time = l_sum + r_sum + (len(s))  # 총 걸린 시간
print(final_time)
 

'python > Algorithm' 카테고리의 다른 글

[백준] 2503 숫자 야구  (0) 2022.01.28
[백준] 14889 스타트와 링크  (0) 2022.01.26
[백준 14670] 병약한 영정  (0) 2022.01.19
[백준] 2485 가로수  (0) 2022.01.14
[백준] 2659 십자카드  (0) 2022.01.14
Comments