CodeKata
-
[CodeKata] 프로그래머스 : 3.9(화), 숫자의 표현Algorithm 2021. 3. 9. 16:06
🥋 Ooooth!! (Level 2) 🧮 풀이 공식보다는, 내가 발견한 나름의 규칙성으로 푼 방식이다. function solution(n) { let answer = 1; let div = 2; while (Math.round(n/div) - Math.floor(div/2) >= 1) { if (div%2 === 1 && n%div === 0) { answer++; } else if (div%2 === 0 && n%div === div/2) { answer++; } div++; } return answer; } 1) 변수 설정 answer는 연속한 자연수의 경우의 수이다. 1로 시작하는 이유는 n 자체 1개인 경우는 모든 수가 해당하므로! div는 n을 나눌 숫자이다. 위의 경우가 1로 나눴을 떄이므로..
-
[CodeKata] 프로그래머스 : 3.8(월), 방문 길이Algorithm 2021. 3. 8. 16:44
🥋 Ooooth!! (Level 2) 🧮 풀이 function solution(dirs) { let position = [0,0]; let count = 0; let vectorArr = []; const move = { U: (arr) => arr[1] === 5 ? arr : [arr[0], arr[1]++], D: (arr) => arr[1] === -5 ? arr : [arr[0], arr[1]--], R: (arr) => arr[0] === 5 ? arr : [arr[0]++, arr[1]], L: (arr) => arr[0] === -5 ? arr : [arr[0]--, arr[1]], } for (let l of dirs) { const vector = [position, move[l](po..
-
[CodeKata] 프로그래머스 : 3.7(일), 게임 맵 최단거리Algorithm 2021. 3. 7. 15:34
🥋 Ooooth!! (Level 2) 🧮 풀이 최단거리이기에 BFS 문제임은 인지했으며, 모범답안을 통해 Javascript에서 queue를 통한 BFS 구현을 공부했다. 🖇 리뷰 function solution(maps) { let result = 0; let ySize = maps.length; let xSize = maps[0].length; let queue = [[0, 0]]; let visited = Array.from(new Array(ySize), () => new Array(xSize).fill(false)); while (queue.length) { result++; const size = queue.length; for (let i = 0; i < size; i++) { const p..
-
[CodeKata] 프로그래머스 : 3.5(금), 땅따먹기카테고리 없음 2021. 3. 5. 14:34
🥋 Ooooth!! (Level 2) 🧮 풀이 반복문이나 DFS를 시도했지만 마땅한 풀이가 나오지 않아, 프로젝트 진행을 위해 모범답안을 참고했다. 🖇 리뷰 function solution(land) { var answer = 0; var len = land.length; for (var i =len-2; i>=0; i--){ land[i][0] = Math.max(land[i+1][1], land[i+1][2], land[i+1][3])+land[i][0]; land[i][1] = Math.max(land[i+1][0], land[i+1][2], land[i+1][3])+land[i][1]; land[i][2] = Math.max(land[i+1][0], land[i+1][1], land[i+1][3]..
-
[CodeKata] 프로그래머스 : 3.4(목), 다음 큰 숫자Algorithm 2021. 3. 4. 12:24
🥋 Ooooth!! (Level 2) 🧮 풀이 function binOneCount(n) { const regex = /[1]/g; return n.toString(2).match(regex).length; } function solution(n) { const target = binOneCount(n) while (true) { n++; if (binOneCount(n) === target) { return n; break; } } } binOneCount() 함수는, n(숫자)를 이진법으로 변환한 뒤 '1'의 개수를 반환하는 함수이다. solution() 함수는 풀이를 진행할 함수이다. 먼저, 현재 숫자 n의 1의 개수를 target 변수에 저장한다. while 반복문을 실행한다. n에 1을 더하면서..
-
[CodeKata] 프로그래머스 : 3.3(수), 올바른 괄호 & 튜플Algorithm 2021. 3. 3. 12:45
🥋 Ooooth!! (Level 2) : 올바른 괄호 🧮 풀이 function solution(s){ let stack = []; let stackNum = 0; for (let bracket of s) { if (bracket === '(') { stack.push(bracket) stackNum++ } else { stack.pop(); stackNum-- } } return stack.length === 0 && stackNum === 0 } stack 과 stackNum 2가지 형태의 스택으로 s(괄호 문자열)의 누적값을 관리할 것이다. s(괄호 문자열)을 순회하며, '(' 라면 stack 배열 push & stackNum++, ')' 라면 stack 배열 끝을 pop() & stackNum-- ..
-
[CodeKata] 프로그래머스 : 3.2(화), 가장 큰 정사각형 찾기Algorithm 2021. 3. 2. 14:25
🥋 Ooooth!! (Level 2) 🧮 풀이 * 정확성 테스트 1개 실패, 효율성 테스트 실패로 통과하지 못했다. function solution(board) { let answer = 1; for (let i = 0 ; i board.length-1 || j+answer > board[0].length-1) { break; } answer++; if (board.slice(i, i+answer).map(row => row.slice(j, j+answer))..
-
[CodeKata] 프로그래머스 : 3.1(월), 쿼드압축 후 개수Algorithm 2021. 3. 1. 11:55
🥋 Ooooth!! (Level 2) 🧮 풀이 function solution(arr) { let l = arr.length; const count = arr.flat().filter(e => e === 0).length; let answer = { 0: count, 1: l*l - count, }; let check = Array.from({length: l}, () => Array.from({length: l}, () => false)) while (l > 2) { for (let i = 0 ; i < arr.length ; i += l/2) { for (let j = 0 ; j < arr.length ; j += l/2) { const quadBox = arr.slice(i, i+l/2).map(e..