Search
Duplicate
📒

[Programmers] 07-2. 조이스틱 ⭐

상태
완료
수업
Algorithm Solving
주제
Programmers
4 more properties
참고

문제해설

NOTE
입력 값 ⇒ 문자열(이름)
출력 값 ⇒ 조이스틱을 조작해서 이름을 만들 수 있는 최소회수

문제 로직고민

NOTE
변경하지 않아도 되는 A문자는 최대한 방문하지 않으면서 조이스틱을 움직여야 한다.
DFS로 모든 지점을 방문할때의 최소이동수를 찾는다.
알파벳의 경우에는 이전과, 앞의 이동중 어디가 더 짧은지 탐색해서 구한다.
DFS로 해당 알파벳을 방문할때의 최소이동수를 찾는다.
위의 풀이 방식으로 계속 진행했는데 풀이가 틀렸다.
2시간이상 도전해서 실패해서 다른 풀이를 참고 하기로 한다.

작성코드

NOTE
class Solution { public int solution(String name) { int answer = 0; int length = name.length(); int index; // 다음 값들을 확인할 때 사용 int move = length - 1; // 좌우 움직임 수를 체크 for(int i = 0; i < name.length(); i++){ answer += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1); index = i + 1; while(index < length && name.charAt(index) == 'A'){ index++; } move = Math.min(move, i * 2 + length - index); move = Math.min(move, (length - index) * 2 + i); } return answer + move; } }
Java
복사
문제가 너무 어려웠다…