코린이의 소소한 공부노트

[LeetCode/Easy] 1974. Minimum Time to Type Word Using Special Typewriter 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 1974. Minimum Time to Type Word Using Special Typewriter

무지맘 2023. 4. 24. 14:52

1. Input

1) String word

 

2. Output

1) word의 알파벳을 타이핑하는 데 필요한 최소 시간()을 반환

- 타자기는 원판으로 되어있다.

- 처음 포인터는 a를 가리키고 있다.

- 타자기는 시계방향 또는 반시계방향으로 돌릴 수 있다.

- 포인터가 가리키고 있는 곳에서부터 타이핑하려는 문자까지 떨어진 칸의 수만큼 이동 시간이 걸린다.

- 포인터가 가리키는 문자를 타이핑 하는데 1초가 걸린다.

 

3. Constraint

1) 1 <= word.length <= 100

2) word의 모든 문자열은 영어 소문자이다.

 

4. Example

Input: word = "bza" -> Output: 7

설명: 초기 포인터 = a

- a -> b: 시계 방향으로 1-> 1

- b 타이핑: 1

- b -> z: 반시계 방향으로 2-> 2

- z 타이핑: 1

- z -> a: 시계 방향으로 1-> 1

- a 타이핑: 1

- 1 + 1 + 2 + 1 + 1 + 1 = 7초가 걸리므로 7을 반환한다.

 

5. Code

1) 첫 코드(2023/04/24)

int answer = 0, pointer = 0;
for(int i=0 ; i<word.length() ; i++){
    int c = word.charAt(i)-'a';
    int move = Math.abs(c-pointer);
    answer += Math.min(move, 26-move)+1;
    pointer = c;
}
return answer;