본문 바로가기

코딩테스트

[프로그래머스] level1. 이상한 문자 만들기 (javascript)

반응형

문제

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

나의 풀이

function solution(s) {
    let answer = [];

    const tmp = s.split(' ');

    for(let i =0; i < tmp.length; i ++){
        let tmp2 = tmp[i].split('')
        for(let j =0; j < tmp[i].length; j ++){
            j % 2 === 0 ? tmp2[j] = tmp2[j].toUpperCase() : tmp2[j] = tmp2[j].toLowerCase()
        }
        answer.push(tmp2.join(''))
    }
    return answer.join(' ');
}

다른이들의 정답

방법1.

function solution(s) {
    return s.split(' ').map( a => a.split('').map((b,i)=> i %2 === 0 ? b.toUpperCase() : b.toLowerCase() ).join('')).join(' ')
}

원래 이렇게할려다가 안되서 돌아갔는데, 보니까 join을 제대로 처리를 안해준거였다.
split을 2번했으니 하고 다시 join을 2번 붙였어야됐다.

방법2

function toWeirdCase(s){

  return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})

}

요런 정규식 표현도 사용된다.

반응형