본문 바로가기

Algorithm/Implementation

(Python3) - LeetCode (Easy) : 1974.minimum-time-to-type-word-using-special-typewriter

반응형

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

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.