🗃️javascript/프로그래머스
대문자와 소문자(Lv.0)[고차 함수에 index 적용해서 풀기]
하얀성
2023. 1. 3. 15:43
<문제 설명>
문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string은 영어 대문자와 소문자로만 구성되어 있습니다.
입출력 예my_stringresult
"cccCCC" | "CCCccc" |
"abCdEfghIJ" | "ABcDeFGHij" |
입출력 예 설명
입출력 예 #1
- 소문자는 대문자로 대문자는 소문자로 바꾼 "CCCccc"를 return합니다.
입출력 예 #2
- 소문자는 대문자로 대문자는 소문자로 바꾼 "ABcDeFGHij"를 return합니다.
<제출답안>
function solution(my_string) {
let str1 = my_string;
return [...my_string].map( (x, i) => x.toUpperCase(i) !== str1[i]? x.toUpperCase() : x.toLowerCase()).join("")
}
이거 생각해내기가 왜그리 어려웠던 건지...
앞써푼 index 적용이 reduce나, filter처럼 map에도 적용이 되는구나..(고차함수에 index 적용 ok)
<보충>
다른 사람들 푼거 보니 저 str1 선언 필요없이 그냥 my_string 값이랑 바꾼 값이란 비교해서 삼항연사자로 답 풀어내더라.
function solution(my_string) {
return my_string.split('').map(n => n === n.toUpperCase() ? n.toLowerCase() : n.toUpperCase()).join('')
}
아래 코드는 index 참고하기에 좋은 코드라 들고옴. 저렇게 아스키 코드를 써서도 가능했다.. 역시..
function solution(my_string) {
return my_string.split("").map((v, index) => my_string.charCodeAt(index) < 97 ? v.toLowerCase() : v.toUpperCase()).join("");
}