[프로그래머스] 조이스틱 Javascript

Derhon·2023년 1월 18일
0

문제풀이

목록 보기
10/13
post-thumbnail

조이스틱

나의 답

function solution(name) {
    let answer = 0;
    const min = 65; //A의 아스키코드
    const max = 90 + 1; //Z의 아스키코드 + A->Z로 가는 횟수 1회
    
    const findChar = (find) => {
        //A에서 특정 문자로 가는 최소 거리
        const findCode = find.charCodeAt(); //찾고자하는 문자의 아스키코드
        return Math.min(findCode - min, max - findCode);
    }
    
    const chars = name.split('').map((c) => findChar(c));
    let minMove = chars.length - 1;
    
    chars.forEach((char, idx) => {
        answer += char;
        
        let cursor = idx + 1;
        while(cursor < chars.length && chars[cursor] === 0) cursor++;
        
        minMove = Math.min(minMove, //정 방향으로 전진
                          (idx * 2) + chars.length - cursor, //뒤로 돌아가기
                          idx + 2 * (chars.length - cursor)); //뒤의 요소를 먼저 입력하기
    })
    
    return answer + minMove;
}

조이스틱 순회 방향을 설정하는 것이 까다로웠던 문제이다.
idx + 2 * (chars.length - cursor) 이 부분을 찾아내지 못하고 결국 구글링...
주석과 같이 세 가지로 설정하여 그 중 최솟값을 설정하는 방식이다.

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/

0개의 댓글