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

·2021년 10월 31일
0

코테문제풀기

목록 보기
30/57

문제확인

https://programmers.co.kr/learn/courses/30/lessons/12930?language=javascript

문제풀이

나의 풀이

function solution(s) {
  let str = s.split(' ');
  let wArr = '';
  let w = '';

  for(let i = 0; i < str.length; i++) {
    const word = str[i];
    wArr = word.split('');

    for(let j = 0; j < word.length; j++) {
      if (j % 2 === 0) {
        w = word.charAt(j).toUpperCase();
        wArr.splice(j, 1, w);
      } else {
        w = word.charAt(j).toLowerCase();
        wArr.splice(j, 1, w);
      }
    }     
    str[i] = wArr.join(''); 
  }
  return str.join(' ');
}

입력이 소문자라 홀수 일 때 소문자로 바꿔주는 부분은 코드에 안 넣었는데 그렇게 하면 테스트 케이스를 통과할 수 없어서 굳이 넣어줘야 한다. 질문하기에 어떤 분이 알려주셔서 깨달음.

map을 이용한 다른 풀이

function solution(s) {
    // 짝수번의 문자 = 대문자
    // 홀수번의 문자 = 소문자
    // s의 인풋값을 위와같은 조건으로 바꿔서 문자열을 리턴해줘야 한다.
    
     let strArr = s.split(" ");
    // split 메서드로 문자열을 공백을 기준으로 배열을 만든다.
    // 배열의 공백을 기준으로 홀수와 짝수를 나누어 대소문자를 나눠주기 위해서
    // map으로 배열을 순회하면서 순회한 인덱스들의 홀수 짝수로 나눠 리턴해준다.
    
    return strArr.map(el => {
        let str = "";
        for (let i = 0; i < el.length; i++) {
          if (i % 2 === 0) {
              str += el[i].toUpperCase(); 
          } else {
              str += el[i].toLowerCase(); 
          }
        }
        return str;
    }).join(" ");
}

0개의 댓글