burning-carrot / study-problem-solving

알고리즘 고수가 되기 위한 지름길
5 stars 1 forks source link

풀이: 프로그래머스.42860.조이스틱 #140

Closed changicho closed 4 years ago

changicho commented 4 years ago

42860. 조이스틱

링크

난이도 완료(명)
lv2 2636

설계

시간 복잡도

이름은 최대 20자 이다. 이름의 각 자리로 이동하는 데 한번에 최대 20번 이동해야 하므로,

20^2 번 만큼 이동할 수 있다.

알파벳의 이동은 'Z'-'A' 번 만큼 이동하지만, 이는 ASCII 계산으로 측정할 수 있다.

공간 복잡도

수의 범위가 int를 벗어나지 않는다.

탐욕 알고리즘

지금 인덱스의 다음 문자를 next로 두고 name.length() 보다 작고 A인 경우에는 계속 오른쪽으로 이동한다. (next++)

그리고 turn (초기값 : 최대이동횟수) 를 두고 min값을 비교하면 된다.

i + n - next : 왼쪽으로 돌아갔을 때 A가 아닌 것을 만날 때까지 이동한 횟수

min ( i , n-next) : 현재 진행 인덱스와 뒤에서 가장 가까운 A가 아닌 인덱스 중 어떤 것이 더 적은지 비교한다.

turn = min(turn, i + size - next + min(i, size - next));

고생한 점