연습장
[프로그래머스 Level 2] 무인도 여행 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(maps) { const xLen = maps.length; const yLen = maps[0].length; const offset = [[0, 1], [0, -1], [1, 0], [-1, 0]]; const visited = Array.from({ length: xLen }, () => Array(yLen).fill(false));..
[프로그래머스 Level 2] 호텔 대실 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(book_time) { const getTime = (date) => { const [hour, minute] = date.split(':'); return hour * 60 + Number(minute); }; const rooms = []; book_time .sort((a, b) => getTime(a[0]) - getTime(b[0..
[백준 2447 - Node.js] 별 찍기 - 10
🔗 문제 링크 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net ✏️ 풀이 const N = Number(require('fs').readFileSync('/dev/stdin').toString().trim()); const basicPattern = ['***', '* *', '***']; const getPattern = (n) => { if (n === 3) { return basicPattern; } const ..
[프로그래머스 Level 3] N으로 표현 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(N, number) { const dp = Array.from({ length: 9 }, () => new Set()); dp[1].add(N); for (let i = 1; i num2) { dp[i].add(num1 - num2); } if (num2 > 0) { dp[i].add(Math.floor(num1 / num2)); } 이렇게..
[프로그래머스 Level 2] 프린터 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(priorities, location) { const docs = priorities.map((priority, index) => ({ priority, index })); let order = 1; while (true) { const { priority, index } = docs.shift(); if (docs.some(({ prior..
[백준 2470 - Node.js] 두 용액
🔗 문제 링크 https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net ✏️ 풀이 const [N, input] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const solutions = input .split(' ') .map(Number) .sort((a, b) => a - b); let i = 0; let j = N -..
[프로그래머스 Level 2] 괄호 회전하기 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/76502# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(s) { const opening = ['(', '{', '[']; const closing = [')', '}', ']']; let count = 0; for (let i = 0; i < s.length; i++) { const rotated = s.slice(i) + s.slice(0, i); const stack = []; let i..
[프로그래머스 Level 2] 행렬의 곱셈 - JavaScript
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(arr1, arr2) { const result = Array.from({ length: arr1.length }, () => Array(arr2[0].length).fill()); for (let i = 0; i < arr1.length; i++) { for (let j = 0; j < arr2[0].length; j++) { result..
[백준 1991 - Node.js] 트리 순회
🔗 문제 링크 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net ✏️ 풀이 const [N, ...input] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const nodes = input.map(v => v.split(' ')); class Tree { constructor(value) { this.value = value; this.le..
[백준 1644 - Node.js] 소수의 연속합
🔗 문제 링크 https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net ✏️ 풀이 const N = Number(require('fs').readFileSync('/dev/stdin').toString().trim()); const isPrime = Array(N + 1).fill(true); isPrime[0] = isPrime[1] = false; for (let i = 2; i N) { sum -= primes[i]; i++; } if (sum === N) { count++; } j++; } console.log(count); 먼저 1부터 N까지의 소수를 모두 구한 ..