체육복 그리고 테스트케이스 5
Problem Solving 2020. 9. 2. 22:14

https://programmers.co.kr/learn/courses/30/lessons/42862# 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번� programmers.co.kr leetcode만 풀다보니까 제약사항을 꼼꼼히 확인하는걸 잊은듯 하다. 테스트 케이스 오류나는걸 찾아내고 푸는 연습이 많이 필요 할거 같다. 해당 문제에 대한 풀이는 인터넷에 많이 나와 있으니까 그거 보면 될거 같다. 테스트 케이스 5번 오류를 만든 코드를 써보겠다. function solution(n, lost, reserve) { let students =..

모의고사
Problem Solving 2020. 9. 2. 11:40

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 �� programmers.co.kr %를 사용해서 나머지 구하는 처리 하는 로직을 이해하면 되는 문제이다. 그와 별도로 테스트 케이스 fail을 많이 냈는데, 사소한 오타로 인한 오류 였었다. 이런걸 잘 잡아내는 연습이 필요 할 거 같다. function solution(answers) { let users = [[1,2,3,4,5],[2, 1, 2, 3, 2, 4, 2, 5],[3, 3, ..

완주하지 못한 선수
Problem Solving 2020. 9. 2. 00:13

https://programmers.co.kr/learn/courses/30/lessons/42576# 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr hash map을 쓰거나 Set을 쓰거나 해서 처리 가능하다. function solution(participant, completion) { var answer = ''; let map = new Map(); for(let i = 0; i < participant.length; i++){ map.set(participant[i], ~~..

크레인 인형뽑기 게임
Problem Solving 2020. 9. 1. 23:47

https://programmers.co.kr/learn/courses/30/lessons/64061?language=javascript# 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 그냥 stack을 사용해서 하면 된다. function solution(board, moves) { var answer = 0; var stack = new Array(); for(let i = 0; i < moves.length ;i++){ let loc = moves[i]; for(let j = 0; j < board.length; j++){ if..

1567. Maximum Length of Subarray With Positive Product
Problem Solving 2020. 9. 1. 14:49

Maximum Length of Subarray With Positive Product 곱셈의 법칙을 적절히 이용해야 한다. 짝수의 음수는 반듯이 짝수고 홀수개의 음수는 음수 이기 때문에 여기서 하나의 음수를 빼면 다시 짝수가 된다. - 3개의 음수가 있으면 첫번째 음수를 제외하고 계산하면 되고 - 2개의 음수가 있으면 짝수처럼 처리 하면 된다. var getMaxLen = function(nums) { let firstNegative = -1; let zeroPosition = -1; let negativeCount = 0; let max = 0; for(let i = 0; i < nums.length; i++){ if(nums[i] < 0){ if(firstNegative < 0) { firstNeg..

1568. Minimum Number of Days to Disconnect Island
Problem Solving 2020. 9. 1. 00:06

Minimum Number of Days to Disconnect Island 아이디어 자체를 생각해내는 것은 어렵지 않은데, 그 아이디어를 코드로 옮기는 건 어려운 문제였다. 결국 다른 사람의 코드를 보고 풀었다. 해당 문제의 기본 아이디어는 다음과 같다. - Island가 0이거나 2이상이면 더이상 계산할 필요가 없다. - 어떠한 경우에도 2이상의 삭제는 불필요 하다. 최악의 경우 [[1,1,1],[1,1,1]] 이라고 해도 (0,0)의 1은 우측 및 하단을 자르면 Island는 2개로 나누어 진다. [1,1] 이렇게 하나의 island로 나와서 결국 2개를 다 삭제 해야 한다고 해도 최대 2개이다. [1,1,1] 이 이상의 경우는 가운데 한개를 삭제 하는 것으로 마무리 된다. 결국 답은 2이상을 넘..

Convert Sorted Array to Binary Search Tree
Problem Solving 2020. 8. 27. 22:26

Convert Sorted Array to Binary Search Tree 산수적인 직관이 중요한데 이걸 잘 못하는거 같다. start, end 처리를 계산하는데 몇 십 분을 썻는지 모르겠다. center = start + Math.round((start - end - 1) / 2) -1 var sortedArrayToBST = function(nums,start=0,end=nums.length-1) { if(end < start) return null; if(start == end) return new TreeNode(nums[start]); let center = start + Math.round((end - start + 1) / 2) - 1; let centerNode = new TreeNode..

Validate Binary Search Tree
Problem Solving 2020. 8. 27. 20:13

Validate Binary Search Tree var isValidBST = function(root) { return dfs(root, -Number.MAX_VALUE, Number.MAX_VALUE); function dfs(node, leftBound, rightBound){ if(node == null) return true; if(node.val = rightBound) return false; return dfs(node.left,leftBound, node.val) && dfs(node.right,node.val, rightBound); } };