인프런에서 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
하나씩 확인해보자
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과 똑같은 방법)
이렇게 백준에서 입력을 받아오는 방법을 알아봤으니
내 컴퓨터에서 코드를 짤 수 있는 환경을 만들어 주면 된다
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을 누르면 자동완성이 됩니다
백준에서 입력받는게 까다로워서 많이 헤맸습니다😂
여기까지만 설정이 잘 된다면 문제 풀기위한 준비는 끝났으니 열심히 풀어봅시다🔥