문제 설명
문제 링크
[프로그래머스[Level2] 조이스틱]
(https://school.programmers.co.kr/learn/courses/30/lessons/42860)
접근 방법
- ▲ ▼ 알파벳 최소 이동
name[i]번째 value - 65('A'의 아스키 코드값) 으로 값을 구하기
알파벳의 총 개수 : 26개 / 2 를 통해 13보다 큰 값은 'Z'로 시작하는게 더 최소임 - ◀ ▶ 커서 최소 이동
해결되지 않아 구글링을 통해 직접 수기로 작성하며 이해함.
코드
function solution(name) {
// 'A'~'Z' : 65~90
let answer = 0;
let answer = 0;
const nameLength = name.length;
let move = nameLength - 1;
let move = nameLength - 1; //오른쪽으로 모두 이동하였을 때의 count
for(let i=0;i<nameLength;++i){
let howManyClickButton = name.charCodeAt(i)-65;
if(howManyClickButton>13) howManyClickButton = (26- howManyClickButton);
// ▲ ▼ 부분
//name.charCodeAt(i) => name의 i번째 인덱스의 아스키 코드값 - 65('A'의 아스키 코드값)
let howManyClickButton = name.charCodeAt(i)-65;
// 알파벳의 개수 26개, 반으로 나누어 13보다 큰 값이면 'Z'부터 count하는게 더 최소.
if(howManyClickButton>13) howManyClickButton = (26- howManyClickButton);
answer+=howManyClickButton;
// ◀ ▶ 부분
let x = i+1;
while(x<nameLength &&name[x]=='A') x++;
move = Math.min(move,i+nameLength-x+Math.min(i,nameLength-x));
}
answer+=move;
return answer;
}
'알고리즘문제풀이' 카테고리의 다른 글
프로그래머스[Level2] 무인도 여행 - JavaScript (0) | 2023.04.20 |
---|---|
프로그래머스[Level1] 신고 결과 받기 - JavaScript (0) | 2023.04.19 |
프로그래머스[Level2] 큰수 만들기 -Javascript (0) | 2023.04.19 |
프로그래머스[Level1] 크기가 작은 부분 문자열 -Javascript (0) | 2023.04.19 |
프로그래머스[Level1] 가장 가까운 같은 글자 -Javascript (0) | 2023.04.19 |