전체 글

· 알고리즘
문제링크https://www.acmicpc.net/problem/1105 풀이주어진 예시로는 풀기 힘들어서 테스트 케이스를 계속 찾아내며 문제를 풀수 있었다.8888, 88908860, 900088800, 89000요 정도의 추가 케이스를 설정해서 해당 문제를 풀 수 있었다.  let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString();const [L, R] = input.split(" ").map((n) => parseInt(n));let lArr = String(L) .split("") .map((n) => Number(n));let count = 0;for (let i = lArr.length - 1; i >= ..
· 알고리즘
문제링크https://www.acmicpc.net/problem/1063 풀이const fs = require("fs");const input = fs.readFileSync("/dev/stdin").toString().split("\n");const obj = { A: 0, B: 1, C: 2, D: 3, E: 4, F: 5, G: 6, H: 7, 0: "A", 1: "B", 2: "C", 3: "D", 4: "E", 5: "F", 6: "G", 7: "H",};const move = (r, c, direction) => { switch (direction) { case "R": ..
· 알고리즘
문제링크https://www.acmicpc.net/problem/1449 제출코드어려움 없이 풀 수 있었다.const fs = require("fs");const input = fs.readFileSync("/dev/stdin").toString().split("\n");let [n, l] = input[0].split(" ").map((n) => Number(n));let positionArr = input[1].split(" ").map((n) => Number(n));positionArr.sort((a, b) => a - b);let count = 0;for (let i = 0; i = positionArr[idx] + 0.5) { ++i; ++idx; } ++i..
· 알고리즘
링크https://www.acmicpc.net/problem/11501 문제풀이1. 메모리 초과로 실패한 코드-> 굳이 새로운 배열(refArr) 을 만들고 2번의 순회를 할 필요가 없었다.const fs = require("fs");const input = fs .readFileSync("/dev/stdin") .toString() .split("\n") .map((str) => { return str.split(" ").map((n) => Number(n)); }); for (let i = 1; i 1) { let benefit = 0; let prices = input[i]; let max = 0; le..
· 알고리즘
문제링크https://www.acmicpc.net/problem/11000 제출코드 일단 수업들을 시작시간이 빠른순으로 정렬하고 시작시간이 같으면 끝나는 시간이 빠른시간 순으로 정렬하였다.그리고 정렬한 수업들을 순회하면서 최소 힙과 비교하면서(힙을 안쓰고 정렬을 이용하면 연산횟수가 기하급수적으로 많아서 시간초과가 발생한다.) 비어있는 강의실이 없는 경우 힙에 새롭게 추가하였다. 여기서 추가할 때 수업의 끝나는 시간만 힙에 추가했다. ( 우리가 필요한 정보는 수업이 끝나는 시간이기 때문이다. )마지막에 힙의 사이즈를 통해 몇개의 강의실이 쓰였는 지 알 수 있다.참고) 자바스크립트에서는 힙 자료구조를 직접 구현해야 한다.class MinHeap { constructor() { this.he..
· 끄적끄적
최근에 서버의 부하를 줄이기 위해 무거운 작업을 브라우저단에서 진행하면 어떨까 라는 의문이 들었다. 그리하여 대략 10MB의 Json 데이터를 기반으로 엑셀파일을 생성하는 작업을 화면단에서 진행해 보았다.  예상대로 해당작업을 브라우저단에 실행하면 스레드에 부하가 걸려 화면이 잠깐 버벅이는 현상을 확인 할 수 있었다. 어떻게 하면 해당 버벅임을 없앨까 하는 고민을 하던 와중에 브라우저에서 제공하는 웹 워커를 이용해보기 결심했다. 웹 워커는 브라우저에서 제공하는 기능으로 자바스크립트에서 추가 스레드 역할을 한다고 생각하면 된다.  나는 이 웹워커를 이용해서 엑셀파일을 만드는 작업을 메인 스레드가 아닌 웹워커 스레드를 이용하여 작업하였다.  그리하니 더 이상 화면의 버벅임은 없었다. 다음에도 유사한 상황이 ..
· 알고리즘
문제 링크https://www.acmicpc.net/problem/1092 해설큰 문제 없이 해결 가능했다. const fs = require("fs");const input = fs.readFileSync("/dev/stdin").toString().split("\n");const craneCnt = Number(input[0]);const craneArr = input[1].split(" ").map((n) => Number(n));craneArr.sort((a, b) => b - a);const boxCnt = Number(input[2]);const boxArr = input[3].split(" ").map((n) => Number(n));boxArr.sort((a, b) => b - a);if ..
· 알고리즘
문제 링크https://www.acmicpc.net/problem/1058 해설큰 문제없이 풀 수 있었다. 중복을 따로 처리하기 귀찮아 set을 이용하였다. const fs = require("fs");const input = fs.readFileSync("/dev/stdin").toString().split("\n");const cnt = Number(input[0])// [N,Y,N,N,N]// [N,Y,N,N,N]// [N,Y,N,Y,N]// [N,N,Y,N,Y]// [N,n,N,Y,N]let map = [];for (let i = 1; i { for (let z = 0; z
· 알고리즘
🔥문제링크https://www.acmicpc.net/submit/1051/85874949  🔥풀이만들 수 있는 가장 큰 정사각형 부터 단순 반복문을 돌리면 해결 할 수 있다.!const fs = require("fs");const input = fs.readFileSync("/dev/stdin").toString().split("\n");const [r,c] = input[0].split(" ").map((n)=>Number(n))let map =[] // [[1,0,0],[2,0,0]]for(let i=1; iNumber(n)) map.push(arr)}let least = Math.min(r,c)let answer = 1for(let i=least; i>=2; --i){ for(let ..
· 알고리즘
🔥문제링크https://www.acmicpc.net/problem/1021  🔥풀이처음에는 연산횟수를 고려해서 arr의 배열원소의 shift를 하지않고 푸는 줄 알았는데 굳이 그러지 않고 그냥 shift와 push를 이용하면 쉽게 풀수 있다.const fs = require("fs");const input = fs.readFileSync("/dev/stdin").toString().split("\n");const arr = input[1].split(" ").map((t) => Number(t));const [n, m] = input[0].split(" ").map((t)=>Number(t));let dic = [];for (let i = 1; i { dic.shift();};const f2 ..
devWarrior
devWarrior