Programmers/Level 1

[프로그래머스 / JavaScript] - 이상한 문자 만들기

LaKinRad 2022. 4. 28. 16:16

출처/프로그래머스

● 문제 설명

 

문자열 s는 한 개 이상의 단어로 구성되어 있습니다.

각 단어는 하나 이상의 공백 문자로 구분되어 있습니다.

각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

 

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

 

● 입출력 예
 
s return
"try hello world" "TrY HeLlO WoRlD"

● 입출력 예 설명

 

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다.

각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다.

따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

 


나의 풀이

 

function solution(s) {
    return s.split(" ").map((arr) => 
                            arr.split("").map((res, idx) => 
                                              idx%2==0 ? res.toUpperCase() : res).join("")).join(" ");
}

 


후기

 

처음에 map() 대신 forEach() 를 사용해서 꽤 애먹은 문제였다.

대신, map() 과 forEach() 의 차이점에 대해 알아보는 시간을 가질 수 있었다.

 

간단하게 정리하면,

map() 은 주어진 배열 요소에 대해서 콜백 함수를 호출한 결과를 모아 새로운 배열을 반환하지만,

forEach() 는 문 밖으로 return값을 내보내지 못한다.

 

return값이 없으니 당연히 join()을 할 수가 없었던 것이었다.