꺾이지 않는 마음

[프로그래머스] Lv.0 대문자와 소문자 JS 풀이 본문

코딩테스트 기록

[프로그래머스] Lv.0 대문자와 소문자 JS 풀이

중요한 것은 2022. 10. 27. 19:34

🧡문제 설명

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

💛제한사항

 

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 영어 대문자와 소문자로만 구성되어 있습니다.

💚입출력 예

my_string result
"cccCCC" "CCCccc"
"AbqqheSD" "aBQQHEsd"

💙입출력 예 설명

입출력 예 #1

  • 소문자는 대문자로 대문자는 소문자로 바꾼 "CCCccc"를 return합니다.

입출력 예 #2

  • 소문자는 대문자로 대문자는 소문자로 바꾼 "ABcDeFGHij"를 return합니다.

✨나의 풀이

💜 toUpperCase()를 조건문에 활용

function solution(my_string) {
    let answer = "";
    for (let i of my_string) {
        if (i.toUpperCase() === i) {
            answer += i.toLowerCase();
        } else {
            answer += i.toUpperCase();
        }
    }
    return answer;
}

 

for of 반복문으로 문자열의 문자를 순회하면서 조건문을 사용했다.

기존 문자를 대문자로 변형했을 때 변화가 일어나는지 안일어나는지를 통해 기존 문자가 대문자인지 소문자인지 판별하는 방법이다.

 

만약 대문자로 변환한 값 === 기존 값이라면, 기존 값은 대문자일테니 소문자로 변환해서 answer에 저장해주고,

대문자로 변환한 값 !== 기존 값이라면, 기존 값은 소문자일테니 대문자로 변환해서 answer에 저장해주면 된다.

 

말장난 같은데 한 두어번 읽어보면 이해가 될 것이다.

 

😮다른 풀이

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

 

이렇게 삼항연산자를 사용하면 좀 더 짧은 코드로 작성할 수 있다.

근데 나는 삼항연산자를 쓸 때마다 가독성이 너무 떨어지는 느낌이 들어서 별로 선호하진 않는다.

이 풀이 또한 원리는 내 풀이와 비슷하다.

 

Comments