728x90
반응형
이상한 문자 만들기
문제설명 :
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s | result |
"try hello world" | "TrY HeLlO WoRlD" |
첫번째 접근
: 문자열 전체를 소문자로 바꿔준 후, 공배을 기준으로 split 하여 문자열로 된 배열을 만들었다. 이후 배열을 요소를 돌며 짝수 인덱스의 문자열은 대문자로 바꿔주고 새로운 배열 answer에 push하였다. 마지막으로 answer 배열의 문자열 들을 공백을 기준으로 join하여 반환했다.
function solution(s) {
let answer = []
const stringArr = s.toLowerCase().split('')
arr.forEach(el => {
let strArr = el.split('')
strArr.forEach((item, idx) => {
if(idx % 2 === 0){
strArr[idx] = item.toUpperCase()
}
})
stringArr.push(strArr.join(''))
})
return answer.join(' ')
}
두번째 접근
: 코드를 좀 더 간략하게 짤 수 있지 않을까 생각하다, reduce를 사용해보기로 했다. map을 사용하면 새로운 배열을 반환하니, map method 내에서 reduce를 사용해 짝수번째 글자를 대문자로 바꿔주었다.
function solution(s) {
return s.toLowerCase().split(' ').map(el =>
el.split('').reduce((a, c, i) => a + (i % 2 === 0 ? c.toUpperCase() : c), '')
).join(' ')
}
solution
function toWeirdCase(s){
return s.split(' ').map(i => i.split('').map((j, key) => key % 2 === 0 ? j.toUpperCase() : j.toLowerCase()).join('')).join(' ')
}
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
JS Practice) 프로그래머스 Lv.1 : 시저 암호 (0) | 2023.06.29 |
---|---|
JS Practice) 프로그래머스 Lv.1 : 예산 (0) | 2023.06.28 |
JS Practice) 프로그래머스 Lv.1 : 3진법 뒤집기 (0) | 2023.06.26 |
JS Practice) 프로그래머스 Lv.1 : 같은 숫자는 싫어 (0) | 2023.06.22 |
JS Practice) 프로그래머스 Lv.1 : 3진법 뒤집기 (0) | 2023.06.21 |