연습장/백준(BOJ) 문제풀이
[백준 11660 - Node.js] 구간 합 구하기 5
🔗 문제 링크 https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net ✏️ 풀이 const [[N, M], ...input] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n') .map(v => v.split(' ').map(Number)); const table = Array.from({ length: N + 1 }, ()..
[백준 1743 - Node.js] 음식물 피하기
🔗 문제 링크 https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net ✏️ 풀이 const [[N, M, K], ...input] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n') .map(v => v.split(' ').map(Number)); const corridor = [...Array(N)].map(() => Arr..
[백준 25706 - Node.js] 자전거 묘기
🔗 문제 링크 https://www.acmicpc.net/problem/25706 25706번: 자전거 묘기 길이가 N미터인 직선 자전거 도로가 있다. 도로는 길이가 1미터인 N개의 칸으로 구분되어 있고, 가장 왼쪽에 있는 칸부터 순서대로 1번 칸, 2번 칸, …, N번 칸이다. 도로의 각 칸에는 점프대가 설 www.acmicpc.net ✏️ 풀이 const [[N], heights] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n') .map(v => v.split(' ').map(Number)); const dp = Array(N + 1).fill(0); for (let i = N; i > 0; i--) { dp[i..
[백준 16173 - Node.js] 점프왕 쩰리 (Small)
🔗 문제 링크 https://www.acmicpc.net/problem/16173 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net ✏️ 풀이 const [[N], ...board] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n') .map(v => v.split(' ').map(Number)); const dfs = (x = 0, y = 0) => { const dist = board[x][y]; // 도착한 경우 if (dis..
[프로그래머스 Level 2] 테이블 해시 함수 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(data, col, row_begin, row_end) { return data .sort((a, b) => a[col - 1] === b[col - 1] ? b[0] - a[0] : a[col - 1] - b[col - 1] ) .slice(row_begin - 1, row_end) .map((row, index) => row.reduc..
[백준 1715 - Node.js] 카드 정렬하기
🔗 문제 링크 https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net ✏️ 풀이 class PriorityQueue { constructor() { this.heap = []; } swap(a, b) { const temp = this.heap[a]; this.heap[a] = this.heap[b]; this.heap[b] = temp; } push(value) { const { heap } = this; heap.push(value)..
[프로그래머스 Level 2] 영어 끝말잇기 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(n, words) { const dict = { [words[0]]: true }; for (let i = 1; i < words.length; i++) { const curWord = words[i]; const prevWord = words[i - 1]; if (dict[curWord] || (curWord[0] !== prevWord[..
[백준 3190 - Node.js] 뱀
🔗 문제 링크 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net ✏️ 풀이 const input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const [N, K] = input.slice(0, 2).map(Number); const apples = input.slice(2, 2 + K).map(v => v.split(' ').map(Number)); cons..
[백준 14500 - Node.js] 테트로미노
🔗 문제 링크 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net ✏️ 풀이 const [[N, M], ...paper] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n') .map(v => v.split(' ').map(Number)); const maxValue = paper .reduce( (acc, row) => Math.max(acc, row.reduce..
[백준 6064 - Node.js] 카잉 달력
🔗 문제 링크 https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net ✏️ 풀이 const [T, ...input] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const data = input.map(v => v.split(' ').map(Number)); const getGCD = (a, b) => { let x = Math.max(a, b); let y =..