프로그래머스 풀이/level1

[Programmers] level 1) 문제 '이상한 문자 만들기' 풀이

진기명기 2023. 5. 22. 17:06
🫠 Programmers (level 1) 👉🏻 문제 25번 (이상한 문자 만들기)

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

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

✏️ 입출력 예
s return
"try hello world" "TrY HeLIO WoRID"

 

 

 

 


function solution(s) {
  let arr = s.split(' ')
  let arr2 = arr.map((item) => item.split(''))
  
  for(let i = 0; i < arr2.length; i++) {
      for(let j = 0; j < arr2[i].length; j++) {
          if(j % 2 === 0 || j === 0) {
              arr2[i][j] = arr2[i][j].toUpperCase()
          } else {
              arr2[i][j] = arr2[i][j].toLowerCase()
          }
      }
  }
  return arr2.map((item) => item.join('')).join(' ')
}
✅ split(' ')을 통해 띄어쓰기 공백으로 배열을 나눠서 저장했다.
✅ ['try', 'hello', 'world']로 나눈 배열을 다시 map()을 돌려 ['t', 'r', 'y'] 하나씩 정렬되도록 하였다. 

✅ 이중 for문을 돌려 arr2[i][j]로 위치값을 나타낸 뒤, 만약 ['t', 'r', 'y'] 중 index가 0번째 또는 짝수일 경우 toUpperCase()를 통해 대문자로 변환하였다. 소문자는 toLowerCase()로!
✅ 이중 for문을 통해 나온 결괏값에서 다시 처음 split('')을 했던 것과 같이 join()을 통해 배열을 문자열로 변경해 주었다.