반응형
https://leetcode.com/problems/minimum-time-to-type-word-using-special-typewriter/
시계, 반시계 방향을 생각해 해결한 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
현재 포인터 piv와 움직임 move를 선언 후 각각 'a', 0으로 초기화합니다.
📔 풀이과정
word의 원소를 순회하며 다음을 진행합니다.1. 시계방향은 현재 문자를 아스키 코드로 변환한 값에서 piv를 아스키 코드로 변환한 값의 차이입니다. 만약 이 차이가 음수라면 같은 방향으로 진행해야하므로 26을 더해줍니다.
2. 반시계 방향은 반대로 piv - 현재 문자가 됩니다. 만약 이 차이가 음수라면 마찬가지로 26을 더해줍니다.
3. 시계, 반시계방향의 움직임의 최솟값을 move에 더해줍니다.
4. piv를 현재 문자, typing했으므로 1을 move에 더해줍니다.
📔 정답 출력 | 반환
move를 반환합니다.
📕 Code
📔 Python3
class Solution:
def minTimeToType(self, word: str) -> int:
piv = 'a'
move = 0
for char in list(word):
clockwise_move = ord(char) - ord(piv)
if clockwise_move < 0:
clockwise_move += 26
counter_clockwise_move = ord(piv) - ord(char)
if counter_clockwise_move < 0:
counter_clockwise_move += 26
move += min(clockwise_move,counter_clockwise_move)
piv = char
move+=1
return move
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.