안녕하세요. RyuWoong입니다.
이제까지 Programmers에서 알고리즘 문제를 풀어 왔는데, 깃헙 프로필을 꾸미면서 티어를 노출시키는 기능을 써먹어야겠다고 생각이 들었습니다. 그래서 백준을 풀어보려고 합니다! 그러면서 어떻게 문제를 제가 풀고 제출하는지 한번 슥, 보여드리려고 합니다.
준비하기.
우선 Algorithm이라는 폴더를 만들어 내부에서 관리하려고 합니다.
Algorithm 폴더 내에는 Question과 Utils 폴더를 추가로 만들어줬습니다.
그리고 Question 폴더 내에는 문제번호로 폴더를 만들고 각문제 번호마다, a.js 와 q.txt 를 만들었습니다.
여기서 q.txt는 문제의 테스트케이스가 들어가는 곳이고, a.js는 제가 문제를 풀이하는 자바스크립트 코드를 적는 파일입니다.
간단하게 Test로 1000번 문제인, A+B 문제를 풀어봅시다.
위와 같은 구조로 파일이 만들어지겠죠? 그럼 q.txt에는 아래와 같이 값을 입력해두시구요.
// q.txt
1 2
a.js를 만들어보도록 하겠습니다.
그 전에 Testcase를 읽어오는 함수를 작성할텐데요. Utils에 makeTestcases라고 만들겠습니다.
// Utils/makeTestcase.js
const fs = require('fs');
function makeTestCase() {
const input = fs.readFileSync('./q.txt', 'utf-8').split('\n');
return input;
}
module.exports = makeTestCase;
이 함수를 사용하여 이제 Testcases를 가져올겁니다. 아래코드처럼 작성하면됩니다.
// Question/1000/a.js
const makeTestCase = require('../../Utils/MakeTestCase');
const testcases = makeTestCase(); //string[]
function solution(testcases) {
...
}
solution(testcases);
저는 위 같은 모양을 스니펫으로 만들어서 사용하고 있습니다!
이제 solution 함수 내에서 풀이를 작성하시면 되는데요. 주의할 점은 testcases는 항상 string[] 으로 들어온다는 것 입니다.
우리가 앞서 입력한 Testcase가 ['1 2'] 라는 값으로 들어오는 것이죠.
그래서 저는 이것을 문제에 맞게 다시 수정해줍니다.
// a.js
//...
function solution(testcases) {
const [num1, num2] = testcases[0].split(' ').map((item) => Number(item));
console.log(num1 + num2);
}
//...
이 문제는 테스트케이스 1개를 해결하면 되기 때문에, testcases[0] 즉 첫번째 값을 가져옵니다. 그리고 split을 통해 '1 2'를 ['1','2']로 만들어줍니다. 또 문제가 덧셈이니까 Number로 형변환을 하고 구조분해할당을 이용해 num1, num2에 각각 1, 2를 할당해줍니다.
백준은 console.log로 출력한 내용을 제출한 답으로 처리하기 때문에 console.log(num1+num2)로 제출하면 끝!
그리고 터미널을 열어 해당폴더로 이동합니다. 그리고 a.js를 실행시켜서 올바르게 제출하는지 확인이 가능합니다.
cd Question/1000
node a.js
제출하기!
그럼 백준에 제출할 때는 어떻게 하느냐!
// Utils/baekjoon.js
const fs = require('fs');
let input = fs.readFileSync('/dev/stdin', 'utf-8').split('\n');
function solution(testcases) {
const [num1, num2] = testcases[0].split(' ').map((item) => Number(item));
console.log(num1 + num2);
}
solution(input);
저는 이렇게 Utils/baekjoon.js를 만들어 놓고 안에 solution 내용만 바꿔서 제출하고 있습니다. 문제에 따라 input을 조금 변형시켜야하는 경우도 있으니 주의하세요! 여러분들도 Node.js로 백준을 풀면서 함께.. 알고리즘의 재미에 빠져봅시다.
'Programming > Algorithm' 카테고리의 다른 글
[Algorithm] 병합 정렬 (Merge Sort) .05 (0) | 2021.01.07 |
---|---|
[Algorithm] 퀵 정렬 (Quick Sort) .04 (0) | 2020.12.29 |
[Algorithm] 삽입 정렬(Insertion Sort) .03 (0) | 2020.12.22 |
[Algorithm] 선택 정렬(Selection Sort) .02 (0) | 2020.12.22 |
[Algorithm] 거품 정렬(Bubble Sort) .01 (0) | 2020.12.21 |
삽질의 기록과 일상을 남기는 블로그입니다. 주로 React Native를 다룹니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!