문제설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
주의사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력예시
코드
function solution(s) {
let arr = s.split(' ')
let result = [];
for(let i = 0; i<arr.length; i++){
let words = arr[i].split('').map((word,idx)=>{
if(idx % 2 === 0){
return word.toUpperCase()
} else if(word % 2 !== 0) {
return word.toLowerCase();
}
}).join('');
result.push(words)
}
return result.join(' ')
}
해석
문제를 먼저 해석해보면 띄어쓰기가 나오게 되면 다음에 나올 글자는 0번째 인덱스가 된다.
그렇기에 첫번째 할 일은 띄어쓰기 기준으로 배열에 단어를 넣어줘야한다.
그 배열만큼 포문을 돌리는데, 각 단어마다 접근하기 위해 다시 split으로 단어마다 나눠주고 map을 사용하여 인덱스와 워드를 가져온다.
인덱스를 2로 나눠 나머지가 0이면 인덱스 위치가 짝수임으로 toUpperCase() 해주고, 0이 아니라면 toLowerCase()해준다.
그렇게 만든 각 알파벳을 join으로 다시 합친다.
이렇게 각각의 단어가 만들어지면 result라는 빈배열에 푸쉬해준다.
입출력 예시를 기준으로 보게 되면 ["TrY", "HeLlO", "WoRlD"] 처럼 될것이다.
그럼 마지막으로 배열안의 단어를 합치며 하나의 문자열로 만들기 위해 띄어쓰기를 기준으로 만들어준다.
완성...!ㅕ
한줄평
이 문제는 처음에 잘못생각하여 시간이 걸렸다. split으로 나눠야 하는건 알았지만, 처음부터 알파벳마다 나누는 생각을 했다. 이 문제는 먼저 단어마다 나누고 알파벳마다 나눠야했다. 또 하나 배워갑니다 감사합니다.
링크
https://programmers.co.kr/learn/courses/30/lessons/12930
'개발 공부 > 알고리즘 개념+문제풀이' 카테고리의 다른 글
[프로그래머스 1단계] 문자열을 정수로 바꾸기 (0) | 2021.06.25 |
---|---|
[프로그래머스 1단계] 약수의 합 with javascript (0) | 2021.06.25 |
[프로그래머스 1단계] 자릿수 더하기 with javascript (0) | 2021.06.24 |
[프로그래머스 1단계] 자연수 뒤집어 배열로 만들기 (0) | 2021.06.24 |
[알고리즘 ]DFS 경로 탐색 경우의 수-인접행렬 with javascript (0) | 2021.06.24 |
댓글