[프로그래머스] 이상한 문자 만들기 - JavaScript
문제 출처
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 조건
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
예시
입출력 예
s | return |
---|---|
“try hello world” | “TrY HeLlO WoRlD” |
풀이
function solution(s) {
// s의 값을 toUpperCase()를 이용해 전부 대문자로 변환한다.
// "try hello world" -> "TRY HELLO WORLD"
const upperStr = s.toUpperCase();
// split()을 이용해 공백을 기준으로 나눠 배열로 변환한다.
// "TRY HELLO WORLD" -> ["TRY", "HELLO", "WORLD"]
const arr = upperStr.split(" ");
// map()을 사용해 각 요소를 변경해준다.
// ["TRY", "HELLO", "WORLD"] -> ["TrY", "HeLlO", "WoRlD"]
const changedArr = arr.map((n) => {
// 들어온 값을 문자열 값을 다시 배열로 변환한다.
// "TRY" -> ["T", "R", "Y"]
const charArr = n.split("");
// 다시 한번 map()을 사용해 인덱스가 짝수면 그대로 반환하고
// 들어온 인덱스가 홀수면 toLowerCase()를 이용해소문자로 바꿔준다.
// ["T", "R", "Y"] -> ["T", "r", "Y"]
const changedChar = charArr.map((m, idx) =>
idx % 2 ? m.toLowerCase() : m
);
// 다시 문자열로 변환하여 상위 mpa에 반환 한다.
// ["T", "r", "Y"] -> "TrY"
return changedChar.join("");
});
// map()을 이용해 변환한 배열 값을 공백을 넣어 문자열로 만들어 반환한다.
// ["TrY", "HeLlO", "WoRlD"] -> "TrY HeLlO WoRlD"
return changedArr.join(" ");
}
console.log(solution("try hello world")); // "TrY HeLlO WoRlD"
정리
오늘은 map() 메서드 안에 map() 메서드를 사용하는 중첩 map() 메서드를 사용하여 문제를 풀어봤습니다.
사용된 메서드와 문법에 대해 더 공부하고 싶으신 분은 링크를 클릭해주세요!
split() 메서드 - MDN
join() 메서드 - MDN
map() 메서드 - MDN
toUpperCase() 메서드 - MDN
toLowerCase() 메서드 - MDN
피드백은 언제나 환영입니다. 😊