문제 링크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 ..
Algorithm
문제 링크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 ..
🔥문제링크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/340212 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔥풀이제한사항을 보면서 바로 이진탐색으로 접근하라는 냄새를 맡을 수 있었다. 이진탐색으로 접근 안한다면 괴랄할만큼의 연산 횟수가 필요하고 그럼 분명히 시간초과 이슈가 생기기 때문이다. 다행히 해당 접근이 맞았고 해결!function solution(diffs, times, limit) { let max = 100000, min = 1, mid = undefined le..
🔥문제링크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..
코딩테스트 연습 > 연습문제 > 리코쳇 로봇 (JS) 문제풀이 🔥문제https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔥풀이처음에 DFS로 문제풀이 접근을 했는데 여러케이스에서 시간초과로 문제풀이에 실패했다. 그래서 다른 사람의 풀이를 봤는데 BFS로 문제에 접근하고 있었고 내 생각에도 이 접근법이 시간이 월등히 적게 들꺼란 생각이 들어 BFS로 다시 문제풀이를 진행했다. 우리는 목표위치에 도달하기 위한 최소한의 미끄러짐 수를 구하기 때문에 ..
🔥문제링크https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔥풀이이 문제는 재귀함수를 이용하여 주어진 변환을 지속적으로 할 수 있는지를 확인하는 문제이다. 재귀 함수를 진행하기 위해 필요한 함수 두개를( 균형잡힌 괄호 문자열인지 판단 하는 함수 => is_balanced_string, 올바른 괄호 문자열인지 판단하는 함수 =>is_right_string ) 정의하고 이를 재귀함수 내부에서 이용하여 분기처리 했다.function solution(p..