kakao
-
[CodeKata] 프로그래머스 : 5.30(일), 순위 & 불량 사용자Algorithm 2021. 6. 1. 01:40
🥋 Oooth More!! (Level 3) : 순위 * 출처 : http://contest.usaco.org/JAN08.htm 🧮 풀이 그래프와 DFS를 통해 풀어보려 했으나 오답률이 높아, 모범답안을 보고 해석리뷰를 하였다. 🖇 리뷰 function solution(n, results) { var answer = 0; const graph = Array.from({ length: n+1 },() => Array(n+1).fill(false)); results.map((item) => { const [win,lose]=item; graph[win][lose]=1; //이긴 경우 1 graph[lose][win]=-1; //졌을 경우 -1 graph[win][win]=0;//자기자신 graph[lose]..
-
[CodeKata] 프로그래머스 : 5.1(토), 자물쇠와 열쇠Algorithm 2021. 5. 1. 22:58
🥋 Oooth More!! (Level 3) * 풀이 강의 링크 : programmers.co.kr/learn/courses/10336?utm_source=programmers&utm_medium=test_course10336&utm_campaign=course_10336 key를 90도씩 돌려, key의 돌기들로 Lock의 홈을 채울 수 있으면 된다. 단, key의 돌기가 Lock의 돌기와 만나는 경우가 있으면 안된다. 🧮 풀이 function rotateArr(originalArr) { const N = originalArr.length; const rotatedArr = Array.from(Array(N), () => new Array(N).fill(null)) for (let row = 0; ro..
-
[CodeKata] 프로그래머스 : 4.28(수), 추석 트래픽Algorithm 2021. 4. 28. 17:57
🥋 Oooth More!! (Level 3) * 해설 보러가기 링크 : tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/ 레벨3 첫 문제부터 카카오라서 적잖이 당황했다.. ㅎㅎ 배열의 각 값은 종료시점과 트래픽 시간을 묶은 string 이다. 이를 먼저 시작, 종료시간으로 변환해서 트래픽 구간을 알수 있게끔 해야겠다. 그리하여, 이 트래픽 구간들이 가장 많이 포함되는 1000ms의 구간을 찾아 해당 갯수를 반환하면 된다. 🧮 풀이 function solution(lines) { lines = lines.map((line) => { const [, time, gap] = line.split(" ") const [h, m, s] = time.split(..
-
[CodeKata] 프로그래머스 : 4.21(수), n진수 게임Algorithm 2021. 4. 21. 19:28
🥋 Ooooth!! (Level 2) 카카오 문제 치고는 꽤 단순한 문제다. 0부터 n진수 숫자를 나열하면서, 해당 차례의 값을 개수(t)만큼 저장해줘야 한다. 🧮 풀이 function solution(n, t, m, p) { let strings = '' let stringNum = 0; let answer = ''; let count = 0; while (count < t) { const target = strings[m*count + p-1]; if (!target) { strings += stringNum.toString(n); stringNum++; } else { answer += target; count++; } } return answer.toUpperCase(); } strings는 n진..
-
[CodeKata] 프로그래머스 : 4.20(화), 파일명 정렬Algorithm 2021. 4. 20. 17:54
🥋 Ooooth!! (Level 2) 파일명들의 배열을 재정렬하면 된다. 먼저 나누는 방법은 가운데 숫자(최대 5자리) 기준으로 Head, Number, Tail 세 부분이다. 정렬방법은 1) Head 사전순, 2) Number 숫자비교(0제외), 3) 인덱스 순이다. 즉, Tail은 필요가 없을 것이다. 🧮 풀이 function solution(files) { const regex = /^[0-9]*$/ let fileInfos = []; files.forEach(file => { const fileStrs = file.split("") const idx1 = fileStrs.findIndex(s => regex.test(s)); let idx2; for (let i = idx1+1 ; i < idx1..