티스토리 뷰

코딩테스트 연습 - 이상한 문자 만들기 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr

받은 문자열 s를 아래 표처럼 리턴하라이다. 홀수번째는 대문자, 짝수는 소문자

return
"try hello world" "TrY HeLlO WoRlD"

나의 코드

const solution = (s) => {
  let answer = true;

  s = s.split(' '); // 단어로 나눈 배열 만들고
  let withSpaceArr = []; // 띄어쓰기가 포함되는 배열
  s.forEach((word, wordIdx, wordArr) => {
    let newWord = [];
    let wordPieceByPiece = word.split(''); // 글자로 나눈 배열 만들고

    wordPieceByPiece.forEach((val, pieceIdx, arr) => {
      // 소문자 대문자 만들어주고
      if (pieceIdx % 2 !== 0) {
        arr[pieceIdx] = arr[pieceIdx].toLowerCase();
      } else {
        arr[pieceIdx] = arr[pieceIdx].toUpperCase();
      }
      //------------------------ val 과 arr[pieceIdx]는 다르다!-------------------
      // console.log(`val : ${val}, arr[pieceIdx] : ${arr[pieceIdx]}`); // 둘이 다르다
      //------------------------ val 과 arr[pieceIdx]는 다르다!-------------------
      newWord.push(arr[pieceIdx]);
    });
    newWord = newWord.join('');
    console.log(newWord);
    if (wordIdx !== wordArr.length - 1) withSpaceArr.push(newWord + ' ');
    else {
      withSpaceArr.push(newWord);
    } 
  });
  withSpaceArr = withSpaceArr.join('');// 글자 모은다
  // console.log(withSpaceArr);
  // console.log(s);

  return withSpaceArr;
};

solution('try hello world');

      //------------------------ val 과 arr[pieceIdx]는 다르다!-------------------
      // console.log(`val : ${val}, arr[pieceIdx] : ${arr[pieceIdx]}`); // 둘이 다르다
      //------------------------ val 과 arr[pieceIdx]는 다르다!-------------------

 

forEach문 안의 val 과 arr[pieceIdx]가 값이 대입되면 둘 다 영향이 있을 것 같지만 val은 대입되지 않았다. 

 

다음번엔 유의하자

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함