백준알고리즘
- javascript로 풀기 -
들어가며
백준 알고리즘을 풀 때 JAVA로만 풀다가 직장동료가 프론트앤드로 갈 생각이면 script로 푸는 것이 도움이 많이 될 것이라고 해줘서 두 방법으로 풀어보기로 했다.
그런데 백준 알고리즘의 경우 node.js를 기반으로 풀게 되어있어서 약간의 처리가 필요했다.
Node.js 입력
https://help.acmicpc.net/language/info 에 들어가보면 node.js의 사용법을 설명하고 있다.
언어 정보
section .data input: db "%d %d",0 output: db "%d",10,0 a: times 4 db 0 b: times 4 db 0 section .text global main extern scanf extern printf main: push rbp mov rdi, input lea rsi, [a] lea rdx, [b] mov rax, 0 call scanf mov rax, [a] mov rbx, [b] add rax, rbx
help.acmicpc.net
// 1000번 예제
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a+b);
var fs = require('fs);
- node.js의 file system 모듈을 불러옴
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
- fs모듈의 readFileSync 함수를 통해 동기적으로 해당 경로의 파일 전체를 읽어들임
- 백준의 경우, '/dev/stdin' 경로에 테스트 케이스 파일이 있음
- 읽어들인 정보를 toString()함수를 통해 문자열로 변환
- 입력받은 문자열을 split() 함수를 통해 배열화
- split(' ') : 공백을 기준으로 잘라내서 배열에 담음
상황 별 방식
node.js 방식으로 입력하는 방법을 검색하다가 한 블로그를 보고 괜찮은 것이 있어 숙지하기 위해 정리
// 1. 하나의 값
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().trim();
// 2. 공백으로 구분된 한 줄의 값
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
// 3. 여러 줄의 값
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split('\n');
// 4. 첫 번째 줄에 자연수 n을 입력받고, 그 다음 줄에 공백으로 구분된 n개의 값을 입력받음
var fs = require('fs');
var [n, ...arr] = fs.readFileSync('/dev/stdin').toString().trim().split(/\s/);
// 5. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄부터 n개의 줄에 걸쳐 한 줄에 하나의 값을 입력 받음
var fs = require('fs');
var [n, ...arr] = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
// 6. 하나의 값 또는 공백으로 구분된 여러 값들을 여러 줄에 걸쳐 뒤죽박죽 섞인 값을 입력 받을 때
// ex) n 입력 - 공백으로 구분된 n개의 값 입력 - m 입력 - 여러 줄에 걸쳐 m개의 값 입력
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().trim().split(/\s/);
var n = input[0];
var n_arr = input.slice(1, n+1);
var [m, ...m_arr] = input.slice(n+1);
cf) 입력받은 값들을 모두 String에서 Number로 타입을 변형하려면 split() 뒤에 map(v => +v) 또는 map(Number) 추가
출처: https://overcome-the-limits.tistory.com/25
[알고리즘] 백준 0.nodejs 입력하기
들어가며 518일 동안 단 하루도 빠지지 않고 알고리즘을 풀었다는 글을 본 적이 있습니다. 이 글을 보면서, 생각해보면 하루에 혼자만의 힘으로 다른 코드를 참고하지 않고 코드를 짠 경험이 얼
overcome-the-limits.tistory.com
JAVA와 node.js 두 방법으로 모두 푸는 것이 쉽지는 않을 것 같지만..
아주 낮은 단계부터 워밍업하며 천천히 시작해보자.
End.
heisely's 괴발개발 개발일지
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] #2338. 긴자리 계산 (by JAVA and node.js) (0) | 2022.04.12 |
---|---|
[백준알고리즘] #1550. 16진수 (by JAVA and node.js) (0) | 2022.04.12 |
[백준알고리즘] #1271. 엄청난 부자2 (by JAVA and node.js) (0) | 2022.04.11 |
[백준알고리즘] #1000. A+B & 1001. A-B (by JAVA and node.js) (0) | 2022.04.11 |
[백준알고리즘] solved.ac 사용 (0) | 2022.04.08 |