연습장

04. 대소문자 바꿔서 출력하기 본문

프로그래머스/0단계

04. 대소문자 바꿔서 출력하기

js0616 2023. 6. 17. 00:48

사용언어 : 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