쉬는 동안 프로그래머스 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;
}
'개발 > 문제풀기' 카테고리의 다른 글
[프로그래머스] LV.0 삼각형의 완성조건 (2) 자바스크립트 (0) | 2024.10.28 |
---|---|
[프로그래머스] Lv.0 자바스크립트 문제 정리 (2) (0) | 2024.10.28 |
[프로그래머스] Lv.1 바탕화면 정리 자바스크립트 (0) | 2024.10.18 |