on
3일차 → 이상한 문자 만들기(split(), map(), forEach(), splice...
3일차 → 이상한 문자 만들기(split(), map(), forEach(), splice...
문제설명
문자열 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
from http://eundol1113.tistory.com/112 by ccl(A) rewrite - 2021-11-10 13:01:22