백준(node js) 입력 받기

support·2021년 8월 6일
3

코딩테스트

목록 보기
3/11

인프런에서 js알고리즘 문제풀이 강의를 듣고난뒤 백준 문제풀이를 시작했다
강의에서 문제를 풀때는 메모장에 밑의 형식으로 정답 소스코드를 적어서 제공해줬고
그 안에서 답만 지우고 문제를 푸는 형식으로 되어있었다

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){
                let answer=[];
                let sum=0, min=1000;
                for(let x of arr){
                    if(x%2===1){
                        sum+=x;
                        if(x<min) min=x;
                    }
                }
                answer.push(sum);
                answer.push(min);     
                return answer;
            }
            
            arr=[12, 77, 38, 41, 53, 92, 85];
            console.log(solution(arr));
        </script>
    </body>
</html>

근데 백준으로 가니 어떻게 문제를 풀어야 하는지 모르겠더라😂
밑에 입력이 주어져있는데 어떻게 받아야하는건지...

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);

다른분들의 풀이를 보고 위의 두줄은 도대체 뭐지??라는 의문이 들었고..
또 다시 검색*100

1 백준입력받는 방법

하나씩 확인해보자

var fs = require('fs');
//node.js의 fs모듈을 사용해 파일을 읽어온다

var input = fs.readFileSync('/dev/stdin').toString().split(' ')
//fs모듈을 사용해 ('/dev/stdin')안에 있는 파일을 읽어서 input에 넣는다 
//읽어온 값은 array로 저장된다
//입력받은걸 코딩하기 편하게 바꿔서 쓰면된다

var a = parseInt(input[0]);
var b = parseInt(input[1]);
//input에 저장된 값을 바꿔서 사용하면 된다
//위의 .toString()을 보면 알 수 있듯이 값들이 문자로 저장되어 있기 때문에
//parseInt 을 써서 숫자로 변환 해줘야 한다

console.log(a*b);
//출력

✔숫자로 변환하는 다른 방법

1
var a = parseInt(input[0]);
var b = parseInt(input[1]);

2
var a = Number(input[0]);
var b = Number(input[1]);

3
var a = +input[0];
var b = +input[1];
// js에서는 +단항연산자를 앞에 써주면 뒤에있는 타입이 숫자가 아니면
// 암시적으로 숫자로 바꿔준다(Number과 똑같은 방법)

2 컴퓨터에서 문제푸는법

이렇게 백준에서 입력을 받아오는 방법을 알아봤으니
내 컴퓨터에서 코드를 짤 수 있는 환경을 만들어 주면 된다

visual studio code와 Node.js를 설치해주고
node.js를 터미널에서 실행가능하게 세팅해주면 된다

제가 문제풀던 방식으로 설명 적어두겠습니다
더 편한 방식이 있으시면 알려주세요😉

1 백준 단계별로 폴더를 만들기(function)
2 폴더안에 문제번호를 b2869 이런식으로 폴더를 하나 더 만들어 정리하기
3 b2869 문제번호 폴더를 만들었으면 그안에 문제를 풀기위한 .js파일
그리고 입력받기위한 input.txt파일 두개를 만들어 주기
4 input.txt 파일에 백준에서 제공해주는 입력 붙여넣기

5 app.js에서 문제풀기

이때 ('/dev/stdin')은 백준에서 입력을 받아오는 것이기 때문에
컴퓨터에서 풀려면 input.txt에 넣어준 입력으로 바꿔서 문제를 풀어야 합니다
그렇게 풀 수 있는 코드는

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split(' ');

컴퓨터에서는 input.txt 파일을 읽어오고 백준에서는 '/dev/stdin' 에서 읽어올수 있도록 하는 코드 입니다.

6 문제 풀면서 답이 맞는지 확인하는방법

1 cd 폴더명을 적으면 그 폴더로 들어가게되고
2 node 파일명.js 를 적게되면 파일이 실행되며 답을 보여줍니다
3 문제를 다 풀고난뒤 다른 문제로 넘어가려면 cd .. 을 입력하면 초기단계로
돌아갑니다
tip) 문제번호나 파일명을 적을때 tap을 누르면 자동완성이 됩니다

백준에서 입력받는게 까다로워서 많이 헤맸습니다😂
여기까지만 설정이 잘 된다면 문제 풀기위한 준비는 끝났으니 열심히 풀어봅시다🔥

0개의 댓글

관련 채용 정보