상세 컨텐츠

본문 제목

JS Practice) 프로그래머스 Lv.1 : 이상한 문자 만들기

본문

반응형

 

이상한 문자 만들기

문제설명 :

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

 

제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

 

입출력 예

s result
"try hello world" "TrY HeLlO WoRlD"
   

 

첫번째 접근

:  문자열 전체를 소문자로 바꿔준 후, 공배을 기준으로 split  하여 문자열로 된 배열을 만들었다. 이후 배열을 요소를 돌며 짝수 인덱스의 문자열은 대문자로 바꿔주고 새로운 배열 answer에 push하였다. 마지막으로 answer 배열의 문자열 들을 공백을 기준으로 join하여 반환했다. 

function solution(s) {
    let answer = []
    const stringArr = s.toLowerCase().split('')
    arr.forEach(el => {
        let strArr = el.split('')
        strArr.forEach((item, idx) => {
            if(idx % 2 === 0){
                strArr[idx] = item.toUpperCase()
            }
        })
        stringArr.push(strArr.join(''))
    })
    return answer.join(' ')
}

 

 

두번째 접근

: 코드를 좀 더 간략하게 짤 수 있지 않을까 생각하다, reduce를 사용해보기로 했다. map을 사용하면 새로운 배열을 반환하니, map method 내에서 reduce를 사용해 짝수번째 글자를 대문자로 바꿔주었다. 

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

 

 

solution

function toWeirdCase(s){
  return s.split(' ').map(i => i.split('').map((j, key) => key % 2 === 0 ? j.toUpperCase() : j.toLowerCase()).join('')).join(' ')
}

 

반응형

관련글 더보기

댓글 영역