숨참고 개발다이브

[프로그래머스] Lv.0 자바스크립트 문제 정리 본문

개발/문제풀기

[프로그래머스] Lv.0 자바스크립트 문제 정리

뚀니 Ddoeni 2024. 10. 18. 13:03
728x90

쉬는 동안 프로그래머스 Lv.0부터 다시 문제를 풀이해 보는데 기초를 정리한다는 마음으로 작성한다.

풀이가 아니기 때문에 내가 작성한 답이 정답도 아닐 뿐더러 다른 사람의 답변을 보며 고찰하는 글임!!

 

 

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];
});

lv.0 단계에서 자바스크립트로 선택 시 기본적으로 제공해주는 포맷이다.

보통 입출력 문제에 해당 포맷이 나오는 듯 하다.

해당 글에서는 기본 포맷 코드를 제외한 코드만 작성하며 정리할 예정이다.

 


1. 문자열 출력하기

console.log(str);

 

주어진 문자열을 받아 그대로 출력하는 문제이기 때문에 다음 코드만 추가로 작성하면 된다.

 

 

 

2. a와 b 출력하기

console.log(`a = ${input[0]}\nb = ${input[1]}`);

 

개별 라인으로 로그를 찍어도 되지만 위의 포맷이 더 익숙해 나는 한 줄에 모두 넣었다.

 

 

 

3. 문자열 반복해서 출력하기

    str = input[0];
    n = Number(input[1]);
    console.log(str.repeat(n));

 

repeat() 메서드의 존재를 잊고 살았는데 이 문제를 풀면서 다시 떠올림...

사소한 것도 잊지 말자.. repeat..

 

 

 

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

    str = input[0];
    
    let output = '';
    for (i = 0; i < str.length; i++) {
        if (str[i] === str[i].toUpperCase()) {
            output += str[i].toLowerCase();
        } else {
            output += str[i].toUpperCase();
        }
    }
    console.log(output);

 

처음엔 아스키코드를 생각했다가 잠시 더 고민해 보니 js에는 toUpperCase(), toLowerCase() 메서드가 있다는 것을 떠올렸다.

나는 'output' 이라는 별도의 변수에 문자들을 이어 붙였는데, str 배열을 그대로 활용한 후 console.log(str.join('')); 을 활용한 답변을 보게 되었다. 이래서 기초적인 문제도 주기적으로 풀어줘야 하나보다.

 

 

 

5. 특수문자 출력하기

console.log("!@#$%^&*(\\'\"<>?:;")

 

작은따옴표, 큰 따옴표는 escape 처리를 해주어야 하기 때문에 앞에 역슬래시를 붙여야 출력 가능하다.

 

 

 

6. 덧셈식 출력하기

console.log(`${input[0]} + ${input[1]} = ${Number(input[0]) + Number(input[1])}`);

 

 

 

7. 문자열 붙여서 출력하기

    const str = line.replaceAll(' ', '');
    console.log(str);

 

이 문제의 다른 사람의 답변 중에 의외로 replaceAll()을 사용한 답변을 찾기 어려웠다.

    const strArr = line.split(' ')
    console.log(strArr.join(''))

 

보통 다음과 같은 형식을 이용하는 듯했다. 혹시나 해서 GPT한테 물어보니 둘 다 맞는 방법이라고 해서 안심.

순간 쫄았다...

 

 

 

8. 문자열 돌리기

    str = input[0];
    for (const c of str) {
        console.log(c);
    }

 

대부분 for, forEach, .map() 등의 반복문을 활용한 답변이었다.

그중 눈에 들어온 답변은 console.log(input.join('\n')); join이 여러모로 많이 쓰인다.

 

 

 

9. 홀짝 구분하기

    if (input % 2 === 0) {
        console.log(`${input} is even`);
    } else {
        console.log(`${input} is odd`);
    }

 

%로 나머지를 계산하는 건 자주 쉬운 문제에 등장하는데, 생각해 보니 if-else 말고 ? : 형식인 삼항연산자로 더 간결하게 작성해도 됐었다.

프로젝트 작업할 땐 그렇게 많이 썼으면서, 잠깐 쉬었다고 이렇게 풀이한 내 스스로에 잠시 놀랐음

 

 

 

10. 문자열 겹쳐쓰기

function solution(my_string, overwrite_string, s) {
    const str1 = my_string.substring(0, s);
    const str2 = my_string.substring(s + overwrite_string.length, my_string.length);

    var answer = str1 + overwrite_string + str2;
    return answer;
}

 

해당 문제는 위의 기본 포맷과 다른 기본 포맷이 주어진다. 나는 답에 substring을 사용했는데, 다시 생각해 보니 slice를 사용하는 것이 더 적합하다고 생각했다.

substring은 음수 인덱스를 지원하지 않기 때문에 slice가 더 직관적인 방식이다!

function solution(my_string, overwrite_string, s) {
  const result = my_string.slice(0, s) + overwrite_string + my_string.slice(s + overwrite_string.length);
  return result;
}

 

 

300x250
Comments