일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 리액트 라인차트
- react native lodash
- ReactNative
- 티스토리챌린지
- react 라인차트
- react native hook
- react circle progress bar
- 리액트 line chart
- React Native
- 안드로이드
- 하우스플리퍼인테리어
- 오블완
- RecyclerView
- javascript interface
- Graveyard Keeper
- react native hooks
- 스팀게임추천
- 프로그래머스 LV.0
- react native jsi
- Android
- react circle progress
- 리액트네이티브
- 하우스플리퍼
- 리액트네이티브 hooks
- 프로그래머스 Lv0
- circular progress bar
- Kotlin
- react line chart
- react
- 프로그래머스
- Today
- Total
숨참고 개발다이브
[프로그래머스] Lv.0 자바스크립트 문제 정리 본문
쉬는 동안 프로그래머스 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 |