연습장
04. 대소문자 바꿔서 출력하기 본문
사용언어 : JavaScript
Q. 영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.
입력
aBcDeFg
출력
AbCdEfG
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];
});
대문자를 소문자로 , 소문자는 대문자로 바꿔서 출력하는 문제이다 .
이번에는 구글에 대소문자 변환해주는게 있나 검색해봤다.
str.toUpperCase() // 대문자로 변환
str.toLowerCase() // 소문자로 변환
각 문자를 인덱스 하나씩 가져와서
대문자인지 소문자인지 구분 후
대문자는 소문자로
소문자는 대문자로 바꿔준다.
기존 변수에는 인덱스 단위로 문자 교체가 안되는거 같아서 새로운 변수에 바꾼 값을 저장한다.
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 str2 = "" // 바꾼 문자를 저장할 변수
for (let i = 0 ; i < str.length ; ++i) { // 한개씩 비교
if (str[i] == str[i].toUpperCase()) { // 대문자라면
str2 = str2 + str[i].toLowerCase() // 소문자로 변경
}
else { // 아니면 (소문자이면)
str2 = str2 + str[i].toUpperCase() // 대문자로 변경
}
}
console.log(str2)
});
파이썬으로 풀때는 각 문자 하나씩 가져와서
if 문을 통해 대문자 인지 소문자 인지 구분하고
대문자와 소문자의 유니코드 의 차이 값 만큼 더하거나 뺴주고
다시 모아서 문자로 만들었었다.
strr = ""
for i in str:
j = ord(i)
if j <=90 :
j = j+32
else :
j = j - 32
strr = strr + chr(j)
print(strr)
다른사람 코드
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];
const regex = /[A-Z]/
// const array = []
// for (let i = 0; i < str.length; i++) {
// regex.test(str[i]) ? array.push(str[i].toLowerCase()) : array.push(str[i].toUpperCase());
// }
// console.log(array.join(''))
console.log([...str].map((v)=> regex.test(v) ? v.toLowerCase() : v.toUpperCase()).join(''))
[...str] : Spread Operator 로 문자열 문자들을 분리 및 배열 변환
str = 'abcd'
[...str] // ['a', 'b', 'c', 'd']
map 함수 : 배열.map( 값, [인덱스] ) 함수는 값과 인덱스를 인자로 받아 명령을 실행
for 문으로 반복하지 않아도 배열의 원소를 모두 적용. arr.map(function(item, index) { 명령 })
화살표 함수 (Arrow function) : const 함수이름 = (매개변수) => { 명령 }
/[A-Z/ (정규표현식 regex) : 슬래쉬 문자 사이로 정규식 기호가 들어감 , A부터 Z 까지
(정규표현식).test("문자열") : "문자열"이 "정규표현식"과 매칭되면 true, 아니면 false반환
삼항연산자 : 조건 ? 참이면 실행 : 거짓이면 실행
array.join('a') : 배열원소에 'a' 문자를 넣어 String 으로
array = ['a','b','c']
array.join('x') // axbxcx
'프로그래머스 > 0단계' 카테고리의 다른 글
06. 덧셈식 출력하기 (0) | 2023.06.17 |
---|---|
05. 특수문자 출력하기 (0) | 2023.06.17 |
03. 문자열 반복해서 출력하기 (0) | 2023.06.16 |
02. a와 b 출력하기 (0) | 2023.06.16 |
01. 문자열 출력하기 (0) | 2023.06.16 |