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

문제 출처

Lv.1 이상한 문자 만들기 - JavaScript

문제 설명

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

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

입출력 예

s return
“try hello world” “TrY HeLlO WoRlD”
풀이
function solution(s) {
  // s의 값을 toUpperCase()를 이용해 전부 대문자로 변환한다.
  // "try hello world" -> "TRY HELLO WORLD"
  const upperStr = s.toUpperCase();

  // split()을 이용해 공백을 기준으로 나눠 배열로 변환한다.
  // "TRY HELLO WORLD" -> ["TRY", "HELLO", "WORLD"]
  const arr = upperStr.split(" ");

  // map()을 사용해 각 요소를 변경해준다.
  // ["TRY", "HELLO", "WORLD"] -> ["TrY", "HeLlO", "WoRlD"]
  const changedArr = arr.map((n) => {
    // 들어온 값을 문자열 값을 다시 배열로 변환한다.
    // "TRY" -> ["T", "R", "Y"]
    const charArr = n.split("");

    // 다시 한번 map()을 사용해 인덱스가 짝수면 그대로 반환하고
    // 들어온 인덱스가 홀수면 toLowerCase()를 이용해소문자로 바꿔준다.
    // ["T", "R", "Y"] -> ["T", "r", "Y"]
    const changedChar = charArr.map((m, idx) =>
      idx % 2 ? m.toLowerCase() : m
    );

    // 다시 문자열로 변환하여 상위 mpa에 반환 한다.
    // ["T", "r", "Y"] -> "TrY"
    return changedChar.join("");
  });

  // map()을 이용해 변환한 배열 값을 공백을 넣어 문자열로 만들어 반환한다.
  // ["TrY", "HeLlO", "WoRlD"] -> "TrY HeLlO WoRlD"
  return changedArr.join(" ");
}

console.log(solution("try hello world")); // "TrY HeLlO WoRlD"
정리

오늘은 map() 메서드 안에 map() 메서드를 사용하는 중첩 map() 메서드를 사용하여 문제를 풀어봤습니다.
사용된 메서드와 문법에 대해 더 공부하고 싶으신 분은 링크를 클릭해주세요!

split() 메서드 - MDN
join() 메서드 - MDN
map() 메서드 - MDN
toUpperCase() 메서드 - MDN
toLowerCase() 메서드 - MDN

피드백은 언제나 환영입니다. 😊