본문 바로가기
Algorithm/Programmers

[Programmers] 이상한 문자 만들기(JavaScript)

by 백승전 2022. 5. 10.

 

알림

 

본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.

 

문제

 

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

 

코딩테스트 연습 - 이상한 문자 만들기

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

programmers.co.kr

 

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

 

코드

 

function solution(s) {
    return s.split(' ') // 공백 문자 기준 split
        .map(el => el.split('') // 문자 하나씩 split
             .map((el, index) => index % 2 == 0 ? el.toUpperCase() : el.toLowerCase())
             .join('')) // 문자 하나씩 join
    .join(' ') // 공백 문자 기준 join
}

 

풀이

 

짝수번째에 위치하면 대문자, 홀수번째에 위치하면 소문자로 바꿔주면 되는 문제이기 때문에, 조건문과 소문자와 대문자를 만들어주는 메서드인 toLowerCase()와 toUpperCase()를 사용해주면 됩니다.

 

하지만 문제는, 공백을 어떻게 구분할 것인가인데요.

 

이 문제는 split 함수를 통해 공백을 먼저 제거해주고, map 함수를 통해 요소들을 하나씩 쪼개줍니다. 그 이후에 map 함수를 한 번 더 사용해 위치가 2로 나눴을 때 나머지가 0이라면(= 짝수라면) toUpperCase() 메서드를 통해 대문자로, 아니면 소문자로 변환해 줍니다.

 

이후에 다시 join 함수를 사용해 기존에 split 했던 기준대로 함수를 실행해 리턴을 하여 문제를 풀이하였습니다.

댓글