📌문제
🎖️난이도
✔️풀이
sl, sr = input().split() # z, o
string = input() # zoac
keyboard = ["qwertyuiop", "asdfghjkl", "zxcvbnm"]
def getXY(s):
for i in range(len(keyboard)):
tmp = keyboard[i].find(s)
if tmp == -1:
continue
x, y = i, tmp
return [x, y]
time = len(string) # 4
lx, ly = getXY(sl) # [2, 0] => 왼손(자음) 초기
rx, ry = getXY(sr) # [0, 8] => 오른손(모음) 초기
for s in string:
x, y = getXY(s) # 새로 칠 문자
# 모음
if y >= 5 or [x, y] == [2, 4]: # ***함정***
time += abs(rx-x) + abs(ry-y)
rx, ry = x, y
# 자음
else:
time += abs(lx-x) + abs(ly-y)
lx, ly = x, y
print(time)
🧠노트
키보드에서 모음, 자음 위치 구분할 때,
"b(ㅠ)" 에 해당하는 놈의 위치만 주의해주는 것이 함정!!!
또한, 각 문자의 키보드 위치([x, y])를 구하는 것은 따로 함수로 빼두었다. (getXY)
🔍참고
[ find(), index() 차이점 ]
둘 다 위치(index)를 return 해주는 함수라는 공통점이 있다.
1. find()
- 없으면 -1 return
- only 문자열 함수! (string.find(' '))
리스트, 튜플, 딕셔너리는 사용 불가
2. index()
- 없으면 error
- 문자열, 리스트, 튜플에서 모두 사용 가능!
딕셔너리는 사용 불가
'[ 알고리즘 ] > Implementation' 카테고리의 다른 글
[기타] 마스크 연산같은 다이아몬드 배열 구현 (0) | 2022.09.24 |
---|---|
[백준] 1283. 단축키 지정 (0) | 2022.08.04 |
[백준] 14467. 소가 길을 건너간 이유 (0) | 2022.08.02 |
[백준] 12933. 오리 (0) | 2022.08.02 |
[백준] 20918. 전구 (0) | 2022.08.01 |