반응형

대문자와 소문자

 

문제 설명

문자열 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) {
    
    var answer = '';
    let arr = [];
    
    for (let i = 0; i < my_string.length; i++) {
        if (my_string[i].match(new RegExp(/^[A-Z]/)) === null) arr.push(my_string[i].toUpperCase());
        else arr.push(my_string[i].toLowerCase())
    }
    
    answer = arr.join("")
    return answer;
}

.match() 메서드를 사용해서 대문자인지 소문자인지를 판단했습니다.

위 방법 말고도 아스키코드로 확인을 한다던가, === ( Strict Equal Operator )를 사용하여 my_string[i] === my_string[i].toUpeerCase()같은 방법으로 비교를 할 수도 있습니다.

 

다른 사람의 풀이

function solution(my_string) {
    var answer = '';
    for (let c of my_string) answer += c === c.toLowerCase() ? c.toUpperCase() : c.toLowerCase();
    return answer;
}

for ... of와 3항 연산자를 사용한 내용인것 같습니다.

 

function solution(my_string) {
    return my_string.split('').map(n => n === n.toUpperCase() ? n.toLowerCase() : n.toUpperCase()).join('')
}

저도 처음에 .map을 사용했었는데, 오류인지 오타인지 계속 실행은 되는데 답이 나오지 않아서 for문으로 바꿔했습니다 ㅠ

반응형

+ Recent posts