3은로그

[프로래머스] Lv.1 이상한 문자 만들기 본문

코딩테스트

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

3은 2023. 10. 2. 02:47
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12930
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제

 

 

  • 주의할 점

 

- 처음엔 각 단어가 하나의 공백으로 분리되어 있다고 문제를 잘못 이해하여 문제 푸는데 어려움이 있었다. 

- "각 단어는 하나 이상의 공백 문자로 구분되어 있습니다"를 주의하여 문제를 풀어야한다.

 

 

코드

 

function solution(s) {
    return s.split(' ').map((v,i)=>v.split('').map((v,i)=>i%2==0?v.toUpperCase():v.toLowerCase()).join('')).join(' ');
}

 

1. 문자열 s를 공백문자 하나로 분리하여 배열을 만든다.

만약

s =  "try   hello world" 이면 (try와 hello 사이의 공백은 3개)

s.split(' ')의 결과는 ["try","","","hello","world"]이다.

 

 

2. 배열의 요소를 하나씩 순회한다.

  • map으로 위의 배열을 순회
  • 즉, "try", "", "", "hello", "world"를 차례로 순회

 

3. 배열의 각 요소인 문자열을 배열로 반환 후 다시 순회한다.

  • v.split('')로 문자열을 배열로 변환
  • 즉, [["t","r","y"], [], [], ["h","e","l","l","o"],["w","o","r","l","d"]]로 변환
  • 위의 배열을 다시 순회

 

4. 각 단어의 짝수번째 문자는 대문자로, 홀수번째 문자는 소문자로 바꾼다.

  • 문자.toUpperCase()
  • 문자.toLowerCase()
  • 즉, 결과는 [["T","r","Y"],[],[],["H","e","L","l","O"],["W","o","R","l","D"]]

 

5. join('')으로 각 배열의 요소를 합친다.

  • 즉, 결과는 ["TrY","","","HeLlO","WoRlD"]

 

6. join(' ')으로 공백을 살려 배열을 다시 합친다. 

  • 즉, 결과는 "TrY   HeLlO WoRlD"