프로그래머스[JS] > 지게차와 크레인
·
🔒Algorithm
✅문제https://school.programmers.co.kr/learn/courses/30/lessons/388353 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr🔥풀이문제를 풀 때 주의해야 할 사항이 몇가지 있는데 다음과 같다지게차로 컨테이너를 꺼낼 때 한번에 꺼내야 한다 -> 만약에 'A' 라는 출고 요청이 들어올 경우 아래와 같은 경우 맨 바깥에 있는 A만 꺼낼수 있다. 맨 바깥의 A를 꺼냈으니 빈공간이 생겼다고 가정하고 안쪽 A까지 꺼낸다고 가정 할 경우 답이 틀린다.크레인으로 꺼낸 빈공간으로 인해 지게차로 꺼낼 수 없는 컨테이너를 꺼낼 수 있으므로 지게차로 컨테이너를 꺼내기 전 반드시 크..
백준[JS] > 7569번 토마토
·
🔒Algorithm
문제링크https://www.acmicpc.net/problem/7569문제풀이이 문제는 3차원 배열(storage)을 만들고 BFS로 그 3차원 배열의 토마토를 순차적으로 익히면 문제를 풀 수 있다. 여기서 f는 floor, r는 row, c는 column의 약자이다. 처음에는 각 위치에 있는 토마토가 익는데 걸리는 시간을 나타내는 3차원배열을 하나 더 만들어 문제를 풀었는데 시간초과가 났었다. 그래서 3차원 하나의 배열을 가지고 문제를 접근하였는데 또 시간초과가 났었다. 고심끝에 while문 내부 if문의 조건을 storage[nextF] && storage[nextF][nextR] && storage[nextF][nextR][nextC] 형태로 3차원배열의 존재여부를 key값들을 이용해 확인하는 형..
백준[node.js] > 14940번 쉬운 최단거리
·
🔒Algorithm
문제링크https://www.acmicpc.net/problem/14940 문제풀이너비우선탐색으로 시작점으로 부터 동서남북으로 탐색하면서 최단거리를 갱신하였다. 무리없이 풀 수 있었다.let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");let [N, M] = input .shift() .split(" ") .map((n) => Number(n));let s_row = undefined, s_column = undefined;let map = [];for (let i = 0; i Number(n)); line.forEach((v, column) => { ..
백준[node.js] > 10026번 적록색약
·
🔒Algorithm
문제링크https://www.acmicpc.net/problem/10026 문제풀이적록색약이 아닌 사람이 보는 NxN Grid 2차원배열(map1 > R,G,B 모두 존재) 과  적록색약이 보는 NxN Grid 2차원배열(map2 > G,B만 존재 )  를 각각 만든뒤 두 2차원 배열을 탐색(bfs, dfs) 하면서 그룹핑하면 색상 영역의 수를 도출할 수 있다.   let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");let N = Number(input.shift());let map1 = [];let map2 = [];let map1GroupCnt = 0;let map2GroupCnt =..
백준[node.js] > 16953번 A->B
·
🔒Algorithm
문제링크https://www.acmicpc.net/problem/16953풀이최소 연산 횟수를 구하는 작업이기 때문에 dfs 보단 bfs로 푸는게 더 좋은 방법이다.let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString();let [start, target] = input.split(" ").map((n) => Number(n));let arr = [[start, 1]];let answer = undefined;while (arr.length) { let [num, cnt] = arr.shift(); if (num === target) { answer = cnt; break; } l..
프로그래머스[JS] > 리코쳇 로봇
·
🔒Algorithm
코딩테스트 연습 > 연습문제 > 리코쳇 로봇 (JS) 문제풀이 🔥문제https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔥풀이처음에 DFS로 문제풀이 접근을 했는데 여러케이스에서 시간초과로 문제풀이에 실패했다. 그래서 다른 사람의 풀이를 봤는데 BFS로 문제에 접근하고 있었고 내 생각에도 이 접근법이 시간이 월등히 적게 들꺼란 생각이 들어 BFS로 다시 문제풀이를 진행했다.  우리는 목표위치에 도달하기 위한 최소한의 미끄러짐 수를 구하기 때문에 ..