프로그래머스 #JavaScript - 조이스틱

SSO·2020년 2월 3일
0

프로그래머스 Lv2

목록 보기
10/46

문제

https://programmers.co.kr/learn/courses/30/lessons/42860

풀이

*** 잘 모르겠어서 해설 확인

  1. Me - 마지막 테스트만(11) 실패..ㅠㅠ
function solution(name) {
    var answer = 0;
    var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
    var arr = name.split('');
  
  // 1. 위아래 이동 최소값
  // 메소드를 최대한 활용하자! - charCodeAt();
  // 알파벳 배열 - index 12이하면 위로, 이상이면 아래로 조작이 최소
    for (var i = 0; i < name.length; i++) {
      console.log('i', i);
       var newArr = arr.concat();
        var target = name[i];
        
        if (alphabet.indexOf(target) < 13) {
            answer = answer + alphabet.indexOf(target);
        } else {
            answer = answer + (26 - alphabet.indexOf(target));
        }
      
      console.log(answer);
    
 
    // 2. 좌우 이동 최소값 - A가 나타나는 경우
      // 현 글자의 좌우에서 A아닌 글자를 를 더 빨리 만나는 쪽으로 이동하기
      // = A를 더 늦게 만나는 쪽으로 이동하기 
    var reverseLength = 0;
    var length = 0;
     for (let i=1; i < name.length; i++) {
        if (name[i] !== 'A') {
            reverseLength = name.length - i;
            break;
        }
    }

    for (let i=name.length; i > 0; i--) {
        if (name[i] !== 'A') {
            length = i;
            break;
        }
    }

    }
    
  if(length < reverseLength){
     answer = answer + length;
  } else {
    answer = answer + reverseLength;
  } 

return answer;
}

더 생각해보기

문자열 위치 비교시 method
charCodeAt();
charAt();

참고사항

profile
happy

0개의 댓글