kakao
-
[CodeKata] 프로그래머스: 10.31(일), 징검다리 건너기Algorithm 2021. 10. 31. 19:23
🥋 Oooth More!! (Level 3) 🧮 풀이 위 로직을 그대로 while 반복문으로 구현한 풀이이다. 정확성은 만점이나, 효율성에서 모두 초과가 발생하여 모범답안을 탐구했다! function solution(stones, k) { var answer = 0; while (true) { answer++; stones = stones.map(stone => Math.max(stone-1, 0)); idx = stones.findIndex(s => s === 0); while (idx !== -1) { const jump = stones.slice(idx+1,idx+k); if (jump.length === k-1 && !jump.find(stone => stone !== 0)) { return an..
-
[CodeKata] 프로그래머스: 10.11(월), 길 찾기 게임Algorithm 2021. 10. 11. 03:06
😅 서론 약 1달이 넘게 블로그 포스팅을 하지 않았음을, 오랜만에 블로그 글을 보고 인지하게 되었다.. ㅎㅎ 주된 핑계는, 회사의 코드 리뉴얼 작업에 많은 신경과 작업을 할애함에 따라, 진행하려던 사이드와 포스팅에 신경을 거의 쓰지 못했다. 리뉴얼 작업이 마무리되는 현시점, 여유를 찾음과 동시에 포스팅을 재개하기 위해 주1 알고리즘 부터 시작해보겠다. 🥋 Oooth More!! (Level 3) 🧮 풀이 역시, 카카오 문제답게 매우 어려웠다. 특히, 이진트리를 구현함에 있어 클래스 문법이 많이 취약함을 느꼈다. 모범답안을 통해 풀이법을 학습할뿐만 아니라, Javascript 클래스를 숙달할 수 있는 미니프로젝트를 찾아보려고 한다. 🖇 리뷰 class Node { constructor(id, x, y) {..
-
[CodeKata] 프로그래머스 : 8.22(일), 기둥과 보 설치Algorithm 2021. 8. 22. 18:04
🥋 Oooth More!! (Level 3) 🧮 풀이 * 실패한 풀이이다. 예제코드는 모두 맞췄으나, 실제 문제는 거의다 실패가 발생하였다. const str = (a) => { return a === 0 ? "p" : "b" }; const cmd = (b) => { return b === 1 ? "add" : "remove" }; function solution(n, build_frame) { let ground = Array.from({ length: n+1 }, () => { return new Array(n+1).fill(0) }); let answer = []; const checkCross = (x,y,dir) => { const dirObj = { n: x-1 >= 0 ? ground[x-..
-
[CodeKata] 프로그래머스 : 8.15(일), 광고 삽입Algorithm 2021. 8. 15. 16:45
🥋 Oooth More!! (Level 3) 🧮 풀이 * 실패한 풀이이다. 극소 케이스는 맞았으나, 대부분 실패나 시간초과가 발생했음. function toSec(time) { time = time.split(":"); return Number(time[0] * 3600 + time[1] * 60 + time[2]); } function solution(play_time, adv_time, logs) { function getPlays(start, end, logs) { let play = 0; logSecs.forEach((log) => { if (log[1] end) return; play += (Math.min(log[1], end) - Math.max(log[0..
-
[CodeKata] 프로그래머스 : 7.10(토), 경주로 건설Algorithm 2021. 7. 10. 17:30
🧮 풀이 DFS로 초기 접근했으나, 최단경로를 구해야하므로 BFS로 변환해서 구현해보다가 모범답안 풀이를 하게 되었다. 🖇 리뷰 모든 노드에 이동하는 최소 건설비용을 저장하는 BFS + 다익스트라 알고리즘 을 활용했다. function solution(board) { let answer = 987654321; const dy=[1,0,-1,0]; const dx=[0,1,0,-1]; const len=board.length; const arr=Array.from(Array(board.length),()=>Array(board.length).fill(0)); const queue=[]; const bfs=()=>{ queue.push([0,0,1,0]); queue.push([0,0,0,0]); while..
-
[CodeKata] 프로그래머스 : 7.3(토), 합승 택시 요금Algorithm 2021. 7. 4. 21:48
🥋 Oooth More!! (Level 3) 🧮 풀이 각 경로별로 최단비용을 계산하는 플로이드-와샬 알고리즘을 기반으로 푸는 문제임을 인지했다. 하지만, 구체적인 풀이를 구현하지 못해 모범답안을 분석하였다. 🖇 리뷰 function solution (n, s, a, b, fares) { const board = new Array(n).fill().map(_ => new Array(n).fill(Infinity)); for(let i = 0; i { const [x, y, weight] = pos; board[x-1][y-1] = weight; board[y-1][x-1] = weight; }); for(let k = 0..
-
[CodeKata] 프로그래머스 : 6.11(금), 보석 쇼핑 / 이중우선순위큐Algorithm 2021. 6. 10. 14:17
🥋 Oooth More!! (Level 3) : 보석 쇼핑 🧮 풀이 DFS, BFS, 순회 등 다양한 방법으로 풀었지만 정확성 일부오답과, 효율성 시간 초과 등이 있어 좋은 모범답안을 해석했다. 🖇 리뷰 function solution(gems){ var count = new Set(gems).size; // 보석 종류가 몇개인지 var gemMap = new Map() // 보석 종류 => 보석 자리를 저장하기 위한 맵 var gemLength = [] // 보석을 모두 포함하는 구간을 저장할 배열 gems.forEach((gem, i)=> { gemMap.delete(gem) gemMap.set(gem, i) if(gemMap.size === count){ gemLength.push([gemMap.v..
-
[CodeKata] 프로그래머스 : 6.5(토), 셔틀버스Algorithm 2021. 6. 6. 17:50
🥋 Oooth More!! (Level 3) * 해설링크 : https://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/ 🧮 풀이 해당풀이로 풀었으나, 정답률이 87.5로 나왔다. (몇 가지 예외처리가 잘 안된듯) function toMinute(time) { time = time.split(":"); return time[0] * 60 + Number(time[1]) } function toTime(m) { return String(Math.floor(m/60)).padStart(2,'0') + ":" + String(m%60).padStart(2,'0') } function solution(n, t, m, timetable) { let kor..