728x90
반응형

백준알고리즘

- 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 괴발개발 개발일지

 

 

 

 

 

728x90
반응형

+ Recent posts