자바스크립트 20

<타입스크립트> 너의 의미: 협업

🚀 타입스크립트(이하 'TS')는 필수처럼 되었습니다. 자바스크립트(이하 'JS')를 배우기 전에 TS로 시작해도 되냐는 말도 보입니다. TS에 대한 관심이 뜨거운 것 같습니다. 그렇다면 TS가 어떤 의미인지 가볍게 짚어 보겠습니다. 타입 말그대로 TS는 타입과 관련된 언어입니다. 자유로운 JS에 타입이라는 제약을 가하게 됩니다. 물론 JS에 타입이 없는 것은 아니지만 구렁이 담넘듯 타입이 휙휙 변하는 JS와 달리 TS에서는 타입이 정적으로 유지됩니다. 타입이란 우리가 흔히 사용하는 Number, String, Object부터 any 같은 TS 특유의 타입까지 다양합니다. 타입이라는 굳이 없던 제약을 가하는 것이 당장은 불편하게 느껴지기도 합니다. 에러 발생 TS는 에러가 발생하는 시점을 앞당겨 줍니다...

<책> 리팩터링 2판

🏅 리팩터링 사례들을 주제별로 접할 수 있음 (분량: 550쪽, 난이도: ★★☆☆☆) 블로그 글들과 클린 코드 책, 그리고 여러 강의 등을 통해 리팩터링의 개념과 필요성은 알고 있었습니다. 그럼에도 리팩터링를 주제로 다룬 책은 처음 읽게 되었습니다. 당연하게 생각했던 리팩터링 방법들도 새로운 시각으로 볼 수 있었습니다. 코드 예제들이 대부분 자바스크립트로 되어 있다는 점이 좋습니다. 클래스 개념이 자주 등장합니다. 클래스는 별로 사용하지 않았기에 예제 코드를 파악하는데는 시간이 좀 걸렸습니다. 프로그램을 작성하면서 클래스를 자주 사용하게 될 때 참고하면 내용을 흡수하기가 더 수월할 것 같습니다. 02/24 ~ 03/05 http://www.yes24.com/Product/Goods/89649360 리팩터..

<백준(node.js)> 1978번: 소수 찾기

🤖 문제 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs").readFileSync(filePath).toString().trim().split("\n"); const Q_ARR = INPUT_ARR[1].split(" ").map(Number); let countPrime = 0; function isPrime(n..

유물/└ 백준 2022.02.22

<백준(node.js)> 10757번: 큰 수 A+B

🤖 문제 https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs").readFileSync(filePath).toString().trim().split(" "); console.log( INPUT_ARR.reduce((pre, cur) => BigInt(pre) + BigInt(cur)).toString() ); 1. (line 5) 주어진 숫자 2개를 BigIn..

유물/└ 백준 2022.02.21

<백준(node.js)> 2839번: 설탕 배달

🤖 문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_N = +require("fs").readFileSync(filePath).toString().trim(); let box5kg; let box3kg; function calcBoxNum(totalKg) { box5kg = Math...

유물/└ 백준 2022.02.20

<백준(node.js)> 2775번: 부녀회장이 될테야

🤖 문제 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs") .readFileSync(filePath) .toString() .trim() .split("\n"); const CASE_NUM = +INPUT_ARR[0]; const CASE_ARR = INPUT_ARR.slice(1); ..

유물/└ 백준 2022.02.19

<백준(node.js)> 10250번: ACM 호텔

🤖 문제 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs") .readFileSync(filePath) .toString() .trim() .split("\n"); const INPUT_COUNT = +INPUT_ARR[0]; let ..

유물/└ 백준 2022.02.17

<백준(node.js)> 2869번: 달팽이는 올라가고 싶다

🤖 문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs") .readFileSync(filePath) .toString() .trim() .split(" "); const A = +INPUT_ARR[0]; const B = +INPUT_ARR[1]; const V = +INPUT_ARR[2]; conso..

유물/└ 백준 2022.02.16

<백준(node.js)> 1193번: 분수찾기

🤖 문제 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const ORDER_NUMBER = +require("fs").readFileSync(filePath).toString().trim(); function findFraction(number) { let numerator; let denominator; let total = 1; let sum; for (let i = 1; ; i++) { if (total >= number)..

유물/└ 백준 2022.02.15

<백준(node.js)> 2292번: 벌집

🤖 문제 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 풀이 const fs = require("fs"); const INPUT_NUMBER = +fs.readFileSync("/dev/stdin").toString().trim(); function countRoomNum(num) { let maxNum = 1; for (let i = 0; ; i++) { maxNum += 6 * i; if (maxNum >= num) { return i + 1; }..

유물/└ 백준 2022.02.11