https://school.programmers.co.kr/learn/courses/30/lessons/42860
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 풀이]
그리디를 이용하여 문제를 풀었습니다.
조이스틱 문제는 목표한 글자를 네 방향으로 조이스틱으로 움직여서 만들 수 있는 최소 조작 횟수를 구하는 문제입니다. 아래 위로 움직이는 횟수와 옆으로 움직이는 횟수를 나누어 계산한 후 더해주는 방법으로 해결하였습니다.
구현방법은 아래와 같습니다.
- 옆으로 움직이는 최대 횟수를 지정합니다.
- 배열을 순회하면서 위/아래 중 적게 움직이는 횟수를 구합니다.
- 현재 원소 다음 원소 중 A가 아닌 것을 찾습니다.
- 오른쪽/왼쪽 중 적게 가는 수를 찾아 업데이트합니다.
[JAVA]
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;
}
}
'algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스_구명보트(JAVA) (0) | 2022.11.21 |
---|---|
프로그래머스_큰 수 만들기(JAVA) (0) | 2022.11.21 |
프로그래머스_이중우선순위큐(JAVA) (0) | 2022.11.21 |
프로그래머스_모음사전(JAVA) (0) | 2022.11.18 |
프로그래머스_피로도(JAVA) (0) | 2022.11.18 |