문제설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백 기준)별로 짝/홀수 인덱스를 판단해야 합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리합니다.
입출력 예
내가 푼 문제 풀이
function solution(s) {
let answer = '';
// 1. 단어별로 나눈다.
let arr = s.split(" ")
// [ 'try', 'hello', 'world' ]
let result = arr.map((item, i)=>{
// return 값이 있어야 하기 때문에 map() 사용
let arr2 = item.split("")
// [ 't', 'r', 'y' ]
// [ 'h', 'e', 'l', 'l', 'o' ]
// [ 'w', 'o', 'r', 'l', 'd' ]
// 한글자씩 대소문자로 바꾸기 위해서 forEach 사용
// + 리턴값이 없기 때문에
arr2.forEach((item2, j)=>{
// 2. 짝수번째 알파벳은 대문자로
if(j%2==0){
arr2.splice(j, 1, item2.toUpperCase())
// splice() 함수를 사용해서 j번째 인덱스의 글자 1개를
// 대문자로 변환한 값으로 대체한다.
// 3. 홀수번째 알파벳은 소문자로
}else{ // j%2==1
arr2.splice(j, 1, item2.toLowerCase())
}
})
// 4. 대소문자가 섞인 배열
return arr2.join("")
// TrY
// HeLlO
// WoRlD
// 각각의 결과값을 return 해서 result 배열에 담는다.
})
// 5. 대문소자가 섞인 문자열
answer = result.join(" ")
// result => [ 'TrY', 'HeLlO', 'WoRlD' ]
// join(" ")를 사용해서 배열의 값들을 하나의 문자열로 변환
return answer
// TrY HeLlO WoRlD
}
console.log(solution("try hello world"))
function solution(s) {
let answer = '';
let arr = s.split(" ")
let result = arr.map((item, i)=>{
let arr2 = item.split("")
arr2.forEach((item2, j)=>{
if(j%2==0){
arr2.splice(j, 1, item2.toUpperCase())
}else{
arr2.splice(j, 1, item2.toLowerCase())
}
})
return arr2.join("")
})
answer = result.join(" ")
return answer
}
splice()를 써서 배열 요소의 값을 변경하는 방법
https://mine-it-record.tistory.com/352
https://programmers.co.kr/learn/courses/30/lessons/12930
'항해 중 > 2주차 알고리즘(프로그래머스)' 카테고리의 다른 글
3일차 → 서울에서 김서방 찾기(템플릿 연산자, indexOf()) (0) | 2021.11.10 |
---|---|
3일차 → 수박수박수박수박수박수?(repeat()) (0) | 2021.11.10 |
3일차 → 자릿수 더하기(toString(), split(), parseInt(), forEach(), reduce()) (0) | 2021.11.10 |
3일차 → 문자열 다루기 기본(parseInt()) (0) | 2021.11.10 |
3일차 → 자연수 뒤집어 배열로 만들기(toString(), split(), reverse(), map()) (0) | 2021.11.10 |
댓글