CodeKata
-
[CodeKata] 프로그래머스: 1.10(월), 기지국 설치Algorithm 2022. 1. 10. 03:44
🥋 Oooth More!! (Level 3) 🧮 풀이 function solution(n, stations, w) { let sects = stations.reduce((acc, cur) => [...acc, cur-w-2, cur+w], []) let start_block, end_block = false; const r = 2*w + 1; let answer = 0; if (sects[0] n-1) { sects.pop(); end_block = true; } if (!start_block) sects.unshift(0); if(!end_block) sects.push(n-..
-
[CodeKata] 프로그래머스: 12.28(화), 풍선 터트리기Algorithm 2021. 12. 30. 00:46
🥋 Oooth More!! (Level 3) 🧮 풀이 function solution(a) { let answers = new Set(); function DFS(arr, canLower) { if (arr.length === 1) { answers.add(arr[0]); return; } for (let i = 0 ; i b-a); const newArr = arr.filter(e => e !== max) DFS(newArr, canLower) if (canLower) DFS(arr.filter(e => e !== min), false) } } DFS(a, true) re..
-
[CodeKata] 프로그래머스: 12.19(일), 블록 이동하기Algorithm 2021. 12. 19. 18:18
🥋 Oooth More!! (Level 3) 🧮 풀이 check배열로 방문을 기록하면서 DFS로 풀어보려 했으나, 방법이 모호했으며 무엇보다 회전하는 경우를 고려하기가 힘들었다. 이번에도 눈물을 머금고... 모범답안의 힘을 빌리기로 했다! 🖇 리뷰 최단경로를 탐색하는 문제이므로 BFS를 사용해야 한다. 이 때, 회전까지 고려해야하는 부분이 어려웠는데 모범답안으로 학습해보았다. function solution (board) { const N = board.length; const goal = N + '' + N; const queue = [ [ [1,1], [1,2], 0 ] ]; const visit = new Set(["1112"]); const new_board = new Array(N+2).fill..
-
[CodeKata] 프로그래머스: 11.28(일), 단속 카메라Algorithm 2021. 11. 28. 18:50
🥋 Oooth More!! (Level 3) 🧮 풀이 내 풀이는, check라는 배열을 만들어서 차들이 지나가는 구간에 해당하는 인덱스값들을 1씩 더해준다. (4대가 지나가는 경우, 4가 됨) 이걸 다시 역으로, 가장 많은 차가 지나가는 인덱스를 찾고, 여기에 해당하는 구간들을 다시 check에서 1씩 빼준다. 우선, 우려했던 효율성 테스트에서 실패가 떴을뿐더러, 테스트 케이스 외 실제 정확성 테스트도 다 실패가 떴다. 좀 더 효율적인 비교방법을 모범답안을 통해 학습해보고자 한다. function solution(routes) { var answer = 0; routes = routes.map(([a,b]) => [Math.min(a,b), Math.max(a,b)]) let [min,max] = rou..
-
[CodeKata] 프로그래머스: 11.21(일), 매칭 점수Algorithm 2021. 11. 21. 17:40
🥋 Oooth More!! (Level 3) 🧮 풀이 정규식을 활용한 풀이로 접근했으나, 모두 오답이 나왔다. 아마 컨텐츠나 태그들을 판정하는 방법을 직관적으로 사용해서 에러가 난 것 같다. 모범답안을 연구하며 틀렸을만한 포인트를 짚어봐야겠다. const getContent = (html, tagName) => { const tnl = tagName.length + 2; const start = `` const end = `\n` const spliter = tagName === 'head' ? '\n ' : '\n' return html.slice(html.indexOf(start)+tnl, html.indexOf(end)).split(spliter).slice(1) } const getLinkLis..
-
[CodeKata] 프로그래머스: 11.14(일), 외벽 점검Algorithm 2021. 11. 14. 19:17
🥋 Oooth More!! (Level 3) 🧮 풀이 weak 배열을 2바퀴로 돌려서 생각하는 방법까진 접근했으나, 구체적인 풀이를 모범답안을 통해 공부했다. 🖇 리뷰 function solution (n, weak, dist) { const len = weak.length; const linear_weak = new Array(len*2 - 1).fill(0); for(let i = 0; i b-a); for(let i = 1; i e > coverage); if(!line.length) return i; } } } } return -1; } ..
-
[CodeKata] 프로그래머스: 11.6(토), 모두 0으로 만들기Algorithm 2021. 11. 6. 00:57
🥋 Oooth More!! (Level 3) 🧮 풀이 단순하게, 간선이 많이 연결된 노드부터 주변값을 총합하는 방법으로 접근했다. 당연히, 예외상황이 있기 때문에 정답률이 낮게 나왔다. function solution(a, edges) { const sum = a.reduce((a,b) => a+b) if (sum !== 0) return -1; const len = a.length; const besides = new Array(len).fill([]); edges.forEach(([a,b]) => { besides[a] = [...besides[a], b]; besides[b] = [...besides[b], a]; }) let answer = 0; const idxs = Array.from({len..