반응형
Notice
Recent Posts
Archives
Today
Total
Link
관리 메뉴

꾸준하게

[JS코테] 이상한 문자 만들기 본문

JS코딩테스트

[JS코테] 이상한 문자 만들기

DaeunCoding 2023. 5. 6. 23:58
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

프로그래머스

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

programmers.co.kr

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

 

 

[나의 풀이]

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

 

ex. s = "try hello world"

 

1) s를 띄어쓰기 단위로 배열화함

//"try hello world" => ['try', 'hello', 'world']
s.split(' ')

 

2) 배열의 요소를 다시 배열화함

//['try', 'hello', 'world'] => 
/*[
  [ 't', 'r', 'y' ],
  [ 'h', 'e', 'l', 'l', 'o' ],
  [ 'w', 'o', 'r', 'l', 'd' ]
]*/
s.split(' ').map(x => x.split(''))

 

3) 내부 배열을 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 변환함

/*
[
  [ 't', 'r', 'y' ],
  [ 'h', 'e', 'l', 'l', 'o' ],
  [ 'w', 'o', 'r', 'l', 'd' ]
]
=>
[
  [ 'T', 'r', 'Y' ],
  [ 'H', 'e', 'L', 'l', 'O' ],
  [ 'W', 'o', 'R', 'l', 'D' ]
]
*/
s.split(' ').map(x => x.split('').map((a,i) => i%2 ? a.toLowerCase() : a.toUpperCase())

 

4) 다시 배열을 문자열로 바꿔줌

/*
[
  [ 'T', 'r', 'Y' ],
  [ 'H', 'e', 'L', 'l', 'O' ],
  [ 'W', 'o', 'R', 'l', 'D' ]
]
=>
[ 'TrY', 'HeLlO', 'WoRlD' ]
*/
s.split(' ').map(x => x.split('').map((a,i) => i%2 ? a.toLowerCase() : a.toUpperCase()).join(''))
//[ 'TrY', 'HeLlO', 'WoRlD' ] => "TrY HeLlO WoRlD"
s.split(' ').map(x => x.split('').map((a,i) => i%2 ? a.toLowerCase() : a.toUpperCase()).join('')).join(' ')

 

728x90
반응형