-
항해 99 - 이상한 문자 만들기알고리즘 공부/JavaScript 문제 2023. 4. 17. 22:40
[ 문제 ]
문자열 s는 한 개 이상의 단어로 구성되어 있습니다.
각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
[ Input / Output 예시 ]
Input Output "try hello world" "TrY HeLlO WoRlD"
[ 풀이 ]
보자마자 내가 생각 났던 방법 그대로 표현하자면
"try hello world"
↓ split(" ")
["try", "hello", "world"]
↓ split("")
["t", "r", "y"] , ...
↓ map(인덱스 위치에 따라 대소문자 변경)
["T", "r", "Y"], ....
↓ join("")
["TrY", "HeLlO", "WoRlD"]
↓ join(" ")
"TrY HeLlO WoRlD"
너무 감사하게도 join 메소드가 똑같이 있었기 때문에 가능했던 풀이이다.
[ 코드 ]
// 공백을 기준으로 판단해야 하므로 split을 통해 공백을 기준으로 자른다. // 단어를 문자로 쪼개서 인덱스의 위치에 따라서 대문자 소문자로 변경해준다. // 단어를 문자로 쪼갰기 때문에 join으로 한 단어로 만들어주고 문자는 또 다시 하나의 문장으로 모아준다. const solution1 = function (s) { // 문장을 공백을 기준으로 쪼개기 const sSplit = s.split(' '); const result = []; // 각 단어로 for문 돌리기 for (let i=0 ; i<sSplit.length ; i ++){ // 단어를 문자로 쪼개서 대문자, 소문자 변경 // 쪼개진 문자를 다시 단어로 result.push(sSplit[i].split('').map((str, j) => (j%2===0) ? str.toUpperCase() : str.toLowerCase()).join('')) // result 배열에 한 단어씩 push } // result를 한 칸의 공백을 기준으로 한 문장으로 모아준다. return result.join(' '); } console.log(solution1("try hello world"))
'알고리즘 공부 > JavaScript 문제' 카테고리의 다른 글
항해 99 - 자연수 뒤집기 (0) 2023.04.19 항해 99 - 자릿수 더하기 (0) 2023.04.17 항해 99 - 완주하지 못한 선수 (1) 2023.04.17 항해 99 - 수박수박수박수박수박수? (1) 2023.04.17 항해 99 - 문자열 다루기 기본 (0) 2023.04.16