프로그래머스 가운데 글자 가져오기 slice




프로그래머스 ‘가운데 글자 가져오기’

문제 ) 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

나눈 값을 인덱스로 이용해서 문자열의 i번째 인덱스를 가져오면 된다.

아래는 내가 푼 방법….ㅠ.ㅠ

function solution(s) {
    var answer = '';
    const arr = s.split('');
    for(let i=0;i<arr.length;i++){
        if(arr.length % 2 === 0){
            answer = arr[Math.floor(arr.length/2)-1];
            answer += arr[Math.floor(arr.length/2)];
        }else{
            answer = arr[Math.floor(arr.length/2)];
        }
    }
    
    return answer;
}

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ진짜 내 코드는 왜이렇게 지저분한걸까..

해설보면 세상 깔끔하게 되어있어서 너무 부럽다..

부끄럽지만.. 그래도 내가 어떻게 생각하고 풀었는지 기억할 수 있게 코드 첨부…ㅜ.ㅜ



return s.length % 2 !== 0
        ? s[Math.floor(s.length / 2)]
        : s.slice(s.length / 2 - 1, s.length / 2 + 1);



클린한 코드를 보고 내 코드와 비교해보면

굳이 배열로 만들어주지 않아도 되는데 배열로 만들어주어서 코드 길이가 길어졌고,

삼항연산자를 사용하면 더 깰꼼하게 작성할 수 있을것 같다.

그리고 지금 slice사용하는 문제 3번째인데 아직도 slice를 쓰면되겠다, 라는 생각이 전혀 들지 않는다…….

배열에서 어떤 특정 범위의 값을 빼와야한다면 다음번엔 반드시 slice나 splice를 이용해서 가져와봐야겠다

다짐! (‘•̀ ▽ •́ )φ




© 2018. by sora

Powered by sora