문제링크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..
문제 링크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/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/1074 🔥풀이일단 2**N X 2**N 이루어진 배열에서 2**N-1 * 2**N-1 으로 4개의 영역 중 어떤 영역에 속해있는지 판별하면서 재귀적으로 스코프를 계속해서 좁혀 나갔다. 좁혀나가면서 Skip한 영역에 속해있는 개수를 지속해서 answer에 더하였다.// 5분const fs = require("fs");const input = fs.readFileSync("/dev/stdin").toString();//.split("\n");let [N, r, c] = input.split(" ").map((n) => Number(n));if(N===1){ if(r==0&&c==0){ console.log(0) }..
🔥문제링크https://school.programmers.co.kr/learn/courses/30/lessons/340211 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔥풀이각 로봇들이 0초일때, 1초일때, 2초 일때 .. n 초 일때 위치를 arr에 담았다.예를들어 1번 로봇이 0 초일때 (1,1), 1초일때 (2,3), 2초일때 (3,3) 이라면 이를 [ [1,1], [2,3], [3,3] ] 로 기록하였다.그러면 총로봇갯수만큼의 arr가 생성되고 각 arr의 index가 같고 동일한 위치에 있을 때를 포착하여 충돌횟수를 증가 시켰다. funct..
🔥문제링크https://school.programmers.co.kr/learn/courses/30/lessons/12907 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔥첫번째 풀이 ( 테스트 케이스 모두 통과 but 시간초과 )처음에 내가 작성한 코드이다. ( 하단 참조 ) 이 코드는 테스트 케이스는 모두 통과지만 시간초과 테스트에서 모두 시간초과가 나왔다😭 다른사람들의 코드를 참고해보니 재귀가 아닌 dp ( dynamic programming : 최적화 ) 문제였던 것 같다.function solution(n, money) { let answ..