알고리즘
-
[백준 / javascript] 2980번 도로와 신호등알고리즘 2023. 5. 15. 23:50
https://www.acmicpc.net/problem/2980 // 2980 : 도로와 신호등 const readFile = process.platform === 'linux' ? '/dev/stdin' : 'test.txt'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split('\n'); const [N, L] = input[0].split(' ').map(Number); let info = []; for (let i = 1; i { time = item[0] + plusTime; let tmp = time % (item[1] + item[2]); if (tmp < item[1]) { plusTime += i..
-
[백준 / javascript] 2606번 바이러스알고리즘 2023. 4. 16. 20:42
https://www.acmicpc.net/problem/2606 // 2606 : 바이러스 const readFile = process.platform === 'linux' ? '/dev/stdin' : 'test.txt'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); const node = Number(input[0]); const edge = Number(input[1]); const graph = [...Array(node + 1)].map(() => []); const visited = [...Array(node + 1)].fill(false); let answer = 0; // 그래프..
-
[백준 / javascript] 13305번 주유소알고리즘 2023. 4. 10. 17:35
https://www.acmicpc.net/problem/13305 // 13305 : 주유소 const readFile = process.platform === 'linux' ? '/dev/stdin' : 't.txt'; let [n, d, price] = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); n = Number(n); // n의 최댓값이 10^5, 거리와 가격은 10^9로 매우 크므로, BigInt를 사용 d = d.split(' ').map((i) => BigInt(i)); price = price.split(' ').map((i) => BigInt(i)); let curPrice = price[0]; le..
-
[백준 / javascript] 1543번 문서 검색알고리즘 2023. 4. 10. 15:28
https://www.acmicpc.net/problem/1543 // 1543 : 문서 검색 const readFile = process.platform === 'linux' ? '/dev/stdin' : 't.txt'; let [input, target] = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); let document = input.split(''); let start = 0; let end = target.length; let cnt = 0; while (true) { if (document.slice(start, end).join('') === target) { document.splice(start, t..
-
[백준 / javascript] 1991번 트리 순회알고리즘 2023. 4. 10. 15:27
https://www.acmicpc.net/problem/1874 // 1991 : 트리 순회 const readFile = process.platform === 'linux' ? '/dev/stdin' : 't.txt'; const [n, ...input] = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); const nodes = input.map((v) => v.split(' ')); const trees = nodes.reduce((acc, [node, left, right]) => { acc[node] = { left, right }; return acc; }, {}); const traversePreOrder =..
-
[백준 / javascript] 1874번 스택 수열알고리즘 2023. 4. 10. 15:26
https://www.acmicpc.net/problem/1874 // 1874 : 스택 수열 const readFile = process.platform === 'linux' ? '/dev/stdin' : 't.txt'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); let [n, ...nums] = input; nums = nums.map((n) => Number(n)); const stack = []; let answer = ''; let cnt = 1; for (let i = 0; i < n; i++) { const num = nums.shift(); while (cnt
-
[백준 / javascript] 1021번 회전하는 큐알고리즘 2023. 4. 10. 15:25
https://www.acmicpc.net/problem/1021 큐의 절반 길이와 추출해야 하는 원소의 인덱스를 비교해서 2, 3번 방법 중 하나를 택하면 된다. // 1021 : 회전하는 큐 const readFile = process.platform === 'linux' ? '/dev/stdin' : 't.txt'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); const arr = input[0]; const [n, m] = arr.split(' '); const nums = input[1].split(' '); let queue = []; // 1 ~ n 까지 배열 생성 for (let ..
-
[백준 / javascript] 1065번 한수알고리즘 2023. 4. 10. 15:25
https://www.acmicpc.net/problem/1065 이번 문제는 파이썬으로도 풀어봤던 문제여서 풀이방법이 바로 생각났다. 99까지는 모두 한수이므로 1씩 더해주고 100부터는 문자로 자료형을 바꿔서 연속된 두 개의 수의 차이를 비교해서 한수인 걸 판단하는 방법으로 풀었다. // 1065 : 한수 const readFile = process.platform === 'linux' ? '/dev/stdin' : 't.txt'; const target = require('fs').readFileSync(readFile).toString().trim(); let cnt = 0; for (let n = 1; n