-
[프로그래머스/JavaScript] 대소문자 바꿔서 출력하기IT Study/프로그래머스 2023. 10. 10. 19:14728x90
일단 대소문자라고 하니, 영어 아스키코드를 다시 한번 보겠습니다.
A ~ Z : 65 ~ 90
a ~ z : 97 ~ 122자바스크립트에서 아스키코드와 관련있는 메서드에 대해 알아보죠.
문자 → 아스키 문자열.charCodeAt(인덱스) 문자열에서 인덱스에 해당하는 값을 아스키코드로 변환 아스키 → 문자 String.fromCharCode(아스키) 해당 아스키코드에 대해 문자로 변환 기본 코드
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]; });
최종 코드
관련 메서드를 찾아 사용하는 방법을 확인해, 쉽게 풀 수 있었습니다.
테스트 1 〉통과 (42.62ms, 32.3MB)
테스트 2 〉통과 (44.16ms, 32.3MB)
테스트 3 〉통과 (43.43ms, 32.3MB)
테스트 4 〉통과 (42.87ms, 32.3MB)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]; // 결과를 담을 변수 result let result = ""; for(let i = 0; i < str.length; i++) { // 문자열.charCodeAt(인덱스) : 문자 > 아스키 let ascii = str.charCodeAt(i); if(ascii >= 65 && ascii <= 90) { ascii += 32; } else { ascii -= 32; } // String.fromCharCode(아스키) : 아스키 > 문자 result += String.fromCharCode(ascii); } console.log(result); });
+ 다른 이들의 풀이 중 "가장 가독성이 좋았던" 코드로 풀어본다면 테스트가 얼마나 소요될까요?
테스트 1 〉통과 (45.33ms, 32.2MB)
테스트 2 〉통과 (43.52ms, 32.3MB)
테스트 3 〉통과 (44.81ms, 32.3MB)
테스트 4 〉통과 (44.78ms, 32.2MB)
아주 비슷한 시간이 소요되네요.
그렇지만, 정말 배워야 할 것이 많은 코드입니다. 👍🏻
(1) `...`를 사용하여 문자 배열로 만들었다는 점
(2) map 함수와 정규표현식를 사용했다는 점 (루프를 돌릴 필요 없이 한 줄로 처리할 수 있다는 점)
(3) ES6의 화살표 함수를 통해 모던한 문법을 사용했다는 점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(''), ); });
코드를 파헤져보죠.
// 배열에 대해 map 메서드를 사용하여 각 문자를 변환 input.map((char) => ( // 정규표현식을 사용해 현재 문자(char)가 소문자 알파벳인지 검사 /[a-z]/.test(char) // 만약 소문자이면 대문자로 변환하여 반환 ? char.toUpperCase() // 대문자이면 소문자로 변환하여 반환 : char.toLowerCase() )).join(''); // 변환된 문자 배열을 하나의 문자열로 합치기
/패턴/.test(문자열)
문자열이 /패턴/ 이라는 정규표현식과 매칭되는지 여부를 검사하여 true나 false를 반환합니다.
배열.join(구분자)
배열의 각 요소를 지정한 구분자로 연결해 하나의 문자열로 만들어 반환합니다.
'IT Study > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JavaScript] 주사위 게임 3 (Feat. Map) (0) 2023.10.11 [프로그래머스/JavaScript] 조건 문자열 (Feat. eval) (0) 2023.10.10 [프로그래머스/JavaScript] 문자열 겹쳐쓰기 (0) 2023.10.10 [프로그래머스/JavaScript] 문자열 반복해서 출력하기 (0) 2023.10.10 [프로그래머스/JavaScript] 문자열 출력하기 (Feat. 기초 트레이닝) (0) 2023.10.10