🙌문제설명
영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.
☑️나의 풀이
for문으로 str을 돌면서 대문자 toUpperCase면, 소문자 toLowerCase로 바꿔서 arr에 저장
else (소문자 toLowerCase) 일 경우, 대문자 toUpperCase로 바꿔서 arr에 저장
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = [line];
}).on('close',function(){
str = input[0];
let arr = [];
for (let i = 0; i < str.length; i++) {
if (str[i] === str[i].toUpperCase()) {
arr.push(str[i].toLowerCase());
} else {
arr.push(str[i].toUpperCase());
}
}
console.log(arr.join(""));
});
❓다른 사람 풀이
나는 8줄 걸린 코드를 한줄로 나타냈다.
이 코드는 자바스크립트의 장점을 활용한 코드이다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input;
rl.on('line', (line) => {
input = [...line];
}).on('close', () => {
console.log(
input.map((char) => (/[a-z]/.test(char) ? char.toUpperCase() : char.toLowerCase())).join(''),
);
});
input.map((char) => ( // 배열에 대해 map 메서드를 사용하여 각 문자를 변환
/[a-z]/.test(char) // 정규표현식을 사용해 현재 문자(char)가 소문자 알파벳인지 검사
? char.toUpperCase() // 만약 소문자이면 대문자로 변환하여 반환
: char.toLowerCase() ) // 대문자이면 소문자로 변환하여 반환
).join(''); // 변환된 문자 배열을 하나의 문자열로 합치기
test 메서드
주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환
☑️배운 점
대문자 toUpperCase, 소문자 toLowerCase
문자열을 대소문자로 변환해 반환
join 메서드
배열의 모든 요소를 연결해 하나의 문자열로 만듬