TIL 20220804 - 77번

hoin_lee·2022년 8월 5일
0

TIL

목록 보기
42/236

https://github.com/hoinlee-moi/algorithm_prac

오늘 알고리즘은 백준에서 풀어보았는데 node.js를 이용하여 풀어봤다.
앞서 python으로 풀던 것보다 훨씬 문법이나 구성에 있어서 좀 더 편한 느낌이라 꽤 괜찮았는데 답안을 제출할 때 계속 틀렸다고 나와서 엄청 당황했다.
분명 vscode 안에서 run하고 디버깅 할 땐 아무 문제없이 출력값이 나왔는데 제출만 하면 아니라고하니.. 그래서 여기저기 물어보고 찾아보니 Java를 배울 때 썼던 scanner 기능 같은 걸 써야한다고 했다.
그래서 찾아보니 fs와 readline이라는 node.js에서 쓸 수 있는 방법이 있는데 후에 알고리즘 문제를 더 들어갈 때 시간을 아끼려면 fs가 좀 더 효율적이라 하여 fs를 찾아 적용해보니 다행히도 맞췄습니다란 글을 볼 수 있었다.
뭔가 옛날 수학문제 푸는 느낌으로 재밋게 풀고 있고 node.js로 변경하니 javascript 언어의 문법들을 꼼꼼히 공부할 수 있어 더욱 좋은 것 같다.
다만 너무 알고리즘에 모든 시간을 투자하는 것이 아닌 javascript 심화 부분과 react나 vue에 관련된 부분들의공부를 같이 진행해야 할 것 같다.
이력서, 포폴 준비도 해야하고 할 게 많은데 요즘 더워서 진이 빠지고 화면을 너무 오래 보고 있어서인지 눈이 자꾸 감긴다.
적당히 컨디션 맞춰가며 하자.

오늘 한 일

알고리즘 원격 강의 수강
백준 알고리즘 문제 node.js를 이용하여 풀기

백준 node.js 풀 때 입/출력 값 받기

한 줄로 입력을 받을 때

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split(' ');

let num = Number(input);

for (let i = 1; i <= num; i++) {
  console.log(i);
}

여러 줄로 입력을 받을 때


let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let count = input[0];
let numbers = [];

for (let i = 1; i < input.length; i++) {
 if (input[i] !== '') {
   numbers.push(input[i].split(' '));
 }
}

for (let i = 0; i < numbers.length; i++){
 let num1 = Number(numbers[i][0]);
 let num2 = Number(numbers[i][1]);

 console.log(num1 + num2);
}

[출처]https://nyang-in.tistory.com/156

정리본

1. 하나의 값을 입력받을 때
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim();
2. 공백으로 구분된 한 줄의 값들을 입력받을 때
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
3. 여러 줄의 값들을 입력받을 때
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
4. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄에 공백으로 구분된 n개의 값들을 입력받을 때
const fs = require('fs');
const [n, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split(/\s/);
5. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄부터 n개의 줄에 걸쳐 한 줄에 하나의 값을 입력받을 때
const fs = require('fs');
const [n, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
6. 하나의 값 또는 공백으로 구분된 여러 값들을 여러 줄에 걸쳐 뒤죽박죽 섞여서 입력받을 때
  ex) n 입력 - 공백으로 구분된 n개의 값 입력 - m 입력 - 여러 줄에 걸쳐 m개의 값 입력
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split(/\s/);
const n = input[0];
const n_arr = input.slice(1, n+1);
const [m, ...m_arr] = input.slice(n+1);

[출처]https://overcome-the-limits.tistory.com/25

profile
https://mo-i-programmers.tistory.com/

0개의 댓글