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

문제

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

제한 사항

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

입출력 예

풀이

function solution(s) {
  let arr = s.split(" ");
  let lengths = arr.map((e) => e.length);
  let answer = [];
  arr.forEach((e, i) => {
    let string = "";
    for (let x = 1; x <= lengths[i]; x++) {
      if (x % 2) {
        string += e[x - 1].toUpperCase();
      } else {
        string += e[x - 1].toLowerCase();
      }
    }
    answer.push(string);
  });

  return answer.join(" ");
}

띄어쓰기 기준으로 나눠 배열을 만들고 각 요소의 길이를 가지고 있는 다른 배열을 만들었다. forEach안에서 길이를 가진 배열을 이용하여 풀어냈다.

다른 풀이

function solution(s) {
  let arr = s.split(" ");
  let answer = [];
  for (let item of arr) {
    answer.push(
      item
        .split("")
        .map((e, i) => ((i + 1) % 2 ? e.toUpperCase() : e.toLowerCase()))
        .join("")
    );
  }
  return answer.join(" ");
}

좀 더 줄여봤다. 아이디어는 같으나 접근 방식이 다르다.

좋은 웹페이지 즐겨찾기