⚡문제정보
문자열이 주어지고 문자열은 공백을 기준으로 나뉘어집니다
짝수 인덱스는 대문자로 홀수 인덱스는 소문자로 바꿔야하는데
띄어쓰기를 기준으로 단어 인덱스를 초기화해서 생각합니다.
🙄접근방법
1. 띄어쓰기를 기준으로 단어 인덱스를 초기화해야하니 먼저 " "를 기준으로 split()을 해줘야한다고 생각했습니다.
2. 각 요소의 인덱스를 한번 더 밟아야하니 각 요소마다 for문을 돌려주면서
짝수 인덱스는 대문자로 홀수 인덱스는 소문자로 만들어줘야겠다고 판단했습니다.
한계
결론적으로 for문을 2번 사용하게 되기때문에 시간복잡도가 늘어나는 문제가 있습니다.
이걸 해결할 방법을 모르겠네요..
🔍나의 풀이
function solution(s) {
let strange = s.split(" ")
let answer = []
strange.forEach(ele => {
let replace = ''
for(i=0; i<ele.length ; i++) {
if(i % 2 == 0) {
replace += ele[i].toUpperCase()
}
else replace += ele[i].toLowerCase()
}
answer.push(replace)
})
return answer.join(' ')
}
아래는 코드 설명입니다.
function solution(s) {
let strange = s.split(" ")
// 문자열을 스페이스기준으로 나눠서 배열화
let answer = []
// 정답을 반환할 변수 선언
strange.forEach(ele => {
//forEach를 통해 각 배열요소에 접근
let replace = ''
//변환한 문자열을 저장할 변수 초기화 및 선언
for(i=0; i<ele.length ; i++) {
if(i % 2 == 0) {
replace += ele[i].toUpperCase()
//짝수인덱스는 대문자로 바꿔서 replace에 저장
}
else replace += ele[i].toLowerCase()
//홀수 인덱스는 소문자로 바꿔서 replace에 저장
}
answer.push(replace)
//replace변수를 초기화하기 전에 answer배열에 push
})
return answer.join(' ')
//join(' ')으로 스페이스를 다시 넣어주고 반환
}
🔍다른사람의 풀이
function toWeirdCase(s){
return s.split(' ').map(i => i.split('').map((j, key) => key % 2 === 0 ? j.toUpperCase() : j).join('')).join(' ')
}
console.log("결과 : " + toWeirdCase("try hello world"));
사실 처음엔 map으로 풀려고했는데 map을 두번쓰면 풀 수 있군요..
반응형
'programmers' 카테고리의 다른 글
[Programmers Level 1] 두개 뽑아서 더하기 Javascript (0) | 2022.12.13 |
---|---|
[Programmers Level 1] 소수찾기 Javascript (0) | 2022.12.12 |
[Programmers Level 2 스택] 올바른 괄호 Javascript (0) | 2022.12.12 |
[Programmers Level 1 해시] 완주하지 못한 선수 Javascript (0) | 2022.12.12 |
[Programmers Level 1 정렬] K번째 수 Javascript (1) | 2022.12.11 |