전체 글
[백준] 16935번: 배열 돌리기 3 (JavaScript, NodeJS)
정답 풀이 const path = process.platform === "linux" ? "/dev/stdin" : "input.txt"; // 리눅스로 테스트할 땐 따로 설정해주어야 합니다. let input = require("fs") .readFileSync(path) .toString() .trim() .split("\n") .map(i => i.split(' ').map(Number)); /* input 정리 */ const [N, M, R] = input.shift(); const calculators = input.pop(); /* 문제 풀이 */ const go = (...args) => args.reduce((a, f) => f(a)); for (const calculator of cal..
[백준] 20438번: 출석체크 (JavaScript, NodeJS)
정답 풀이 const path = process.platform === "linux" ? "/dev/stdin" : "input.txt"; // 리눅스로 테스트할 땐 따로 설정해주어야 합니다. const input = require("fs") .readFileSync(path) .toString() .trim() .split("\n") .map(i => i.split(' ').map(Number)); function solution(input) { /* input 정리 */ const [N, K, Q, M] = input[0]; const sleeps = input[1]; const students = input[2].filter(student => !sleeps.includes(student)); /*..
블로그 이동했습니다.
https://junghyeonsu.com 정현수 기술 블로그 웹 프론트엔드 개발자 정현수입니다. junghyeonsu.com 옮긴 이유는 1. 나만의 블로그를 가지고 싶어서 (내가 온전히 커스터마이징 할 수 있는) 2. 어떤 플랫폼에 종속되기 싫어서 3. 블로그 포스팅하면서 잔디 심고 싶어서 만들어 보니 어떤가? 1. 상당히 많이 귀찮다. (RSS 설정, SEO 신경쓰기, 스타일링, 자동화, 구글 애널리틱스 달기 등등) 2. 재밌다. 3. 예쁘다. 놀러오세요. Feedly 이용해서 구독도 해주시면,, 감사합니다.
[NEXTSTEP 자바스크립트 클린코드 2기] 환경설정
eslint, prettier 설치 npm install -D eslint eslint-config-airbnb-base eslint-config-prettier eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-prettier prettier 우선 eslint와 Prettier를 설치해준다. .eslintrc.js module.exports = { env: { browser: true, es2021: true, node: true, }, extends: ['eslint:recommended', 'airbnb-base', 'prettier'], plugins: ['prettier'], rules: { 'import/prefer-default-expo..
[백준] 15486번: 퇴사2 (JavaScript, NodeJS)
문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일2일3일4일5일6일7일TiPi 3 5 1 1 2 4 2 10 20 10 20 15 40 200 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다. 상담을 ..
[백준] 1106번: 호텔 (JavaScript, NodeJS)
문제 세계적인 호텔인 형택 호텔의 사장인 김형택은 이번에 수입을 조금 늘리기 위해서 홍보를 하려고 한다. 형택이가 홍보를 할 수 있는 도시가 주어지고, 각 도시별로 홍보하는데 드는 비용과, 그 때 몇 명의 호텔 고객이 늘어나는지에 대한 정보가 있다. 예를 들어, “어떤 도시에서 9원을 들여서 홍보하면 3명의 고객이 늘어난다.”와 같은 정보이다. 이때, 이러한 정보에 나타난 돈에 정수배 만큼을 투자할 수 있다. 즉, 9원을 들여서 3명의 고객, 18원을 들여서 6명의 고객, 27원을 들여서 9명의 고객을 늘어나게 할 수 있지만, 3원을 들여서 홍보해서 1명의 고객, 12원을 들여서 4명의 고객을 늘어나게 할 수는 없다. 각 도시에는 무한 명의 잠재적인 고객이 있다. 이때, 호텔의 고객을 적어도 C명 늘이기..
[백준] 9465번: 스티커 (JavaScript, NodeJS)
문제 상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다. 상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다. 모든 스티커를 붙일 수 없게된 상냥이는 각 스티커에 점수를 매기고, 점수의 합이 최대가 되게 스티커를 떼어내려고 한다. 먼저, 그림 (b)와 같이 각 스티커에 점수를 매겼다. 상냥이가 뗄 수 있는 스티커의 점수의 최댓값을 구하는 프로그램을 작성하시오. 즉, 2n개의 스티커 중에서 점수의 합이 최대가 되면서 ..
[백준] 1890번: 점프 (JavaScript, NodeJS)
문제 N×N 게임판에 수가 적혀져 있다. 이 게임의 목표는 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 점프를 해서 가는 것이다. 각 칸에 적혀있는 수는 현재 칸에서 갈 수 있는 거리를 의미한다. 반드시 오른쪽이나 아래쪽으로만 이동해야 한다. 0은 더 이상 진행을 막는 종착점이며, 항상 현재 칸에 적혀있는 수만큼 오른쪽이나 아래로 가야 한다. 한 번 점프를 할 때, 방향을 바꾸면 안 된다. 즉, 한 칸에서 오른쪽으로 점프를 하거나, 아래로 점프를 하는 두 경우만 존재한다. 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 이동할 수 있는 경로의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸..
[백준] 11055번: 가장 큰 증가 부분 수열 (JavaScript, NodeJS)
문제 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수열은 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 이고, 합은 113이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 합이 가장 큰 증가 부분 수열의 합을 출력한다. 예제 입력 1 복사 10 1 100 2 50 60 3 5 6 7 8 예제 출력 1 복사 113 정답 풀이 const path = proc..
[자료구조] 자바스크립트로 큐(Queue) 구현하기
큐(Queue) 후입선출 나중에 넣은 아이템을 먼저 뺀다. 자바스크립트 코드 자바스크립트에서 shift와 push를 이용하고 배열을 이용해서 푸는 방법이 있다. 근데 아래 추천문제에서는 시간 초과가 나기 때문에 자바스크립트는 큐를 직접 구현해서 써야한다... Node와 Queue를 구현해 아래문제를 풀어보았다. const path = process.platform === "linux" ? "/dev/stdin" : "input.txt"; // 리눅스로 테스트할 땐 따로 설정해주어야 합니다. const input = require("fs").readFileSync(path).toString().trim().split("\n"); class Node { constructor(item) { this.item ..
[백준] 4153번: 직각 삼각형 (JavaScript, NodeJS)
문제 과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오. 입력 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. 출력 각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다. 예제 입력 1 복사 6 8 10 25 52 60 5 12 13 0 0 0 예제 출력 1 복사 right wrong right 정답 풀이 const path = process.platform === "linux" ? "/dev/stdin" : "input.txt"; // 리눅스로 테..
[백준] 11727번: 2×n 타일링 2 (JavaScript, NodeJS)
문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 복사 2 예제 출력 1 복사 3 예제 입력 2 복사 8 예제 출력 2 복사 171 예제 입력 3 복사 12 예제 출력 3 복사 2731 정답 풀이 const path = process.platform === "linux" ? "/dev/stdin" : "input.txt"; // 리눅스로 테스트할 땐 따로 설정해주어야 합니다. const [n] = require("fs") ...