꾸준하게
[JS코테] 이상한 문자 만들기 본문
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
반응형
'JS코딩테스트' 카테고리의 다른 글
[JS코테] 시저 암호 (0) | 2023.05.08 |
---|---|
[JS코테] Summer/Winter Coding(~2018) - 예산 (0) | 2023.05.07 |
[JS코테] 월간 코드 챌린지 시즌 - 13진법 뒤집기 (0) | 2023.05.05 |
[JS코테] 스택/큐 - 같은 숫자는 싫어 (0) | 2023.05.04 |
[JS코테] 최대공약수와 최소공배수 (0) | 2023.05.03 |