문제

 

풀이 코드

function solution(s) {
  let str = '';
  str = s
    .split(' ')
    .map((item) =>
      item
        .split('')
        .map((st, index) =>
          index % 2 == 0 ? st.toUpperCase() : st.toLowerCase()
        )
        .join('')
    )
    .join(' ');
  return str;
}

 

풀이 과정

문제를 보자마자 split 으로 나누고, map 을 통해 구현하고, join 으로 다시 문자열을 합치면 된다는 생각이 들었다.

풀이 단계를 설명하면 다음과 같다

1. 입력된 문자열 s 를 공백( ' ' ) 기준으로 나눈다.
2. 나뉘어진 문자열은 배열로 공백을 기준으로 배열로 저장된다. 해당 배열을 map 함수로 보낸다.
3. 첫번째 map 함수에서, 또 다시 각 배열의 요소를 한글자씩 나누어 배열로 저장한다.
4. 한글자씩 나뉘어진 요소들의 인덱스가 짝수이면 대문자로 변환, 홀수이면 소문자로 변환하여 반환한다.
5. 반환된 배열의 요소들을 다시 join 함수로 문자열로 만든다.
6. 각 배열 인덱스에 변환된 문자열들을 하나의 문자열로 다시 join 을 이용해 만들어 반환한다

 

다른사람의 코드

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

훨씬 간단하게 구현 하셨다

정규식을 이용한 풀이라니 많이 배워간다!

+ Recent posts