-
[릿코드/js] 1046. Last Stone Weight코딩테스트 2023. 4. 24. 23:54
/** * @param {number[]} stones * @return {number} */ var lastStoneWeight = function(stones) { //제일 무거운거 두개를 고른다. //두개의 무개가 같다면 둘 다 없앤다. //다르다면, 큰것의 무게에서 작은것의 무게를 빼서 그것만 남긴다. //이것을 stones에 하나만 남을때까지 반복한다. -> 재귀이용. if(stones.length===1) return stones[0] if(stones.length===0) return 0 let firstHeavy = 0; let secondHeavy = 0; let firstIdx,secondIdx for(let i=0;i<stones.length;i++){ if(stones[i]>=firstHeavy) { secondHeavy = firstHeavy secondIdx = firstIdx firstHeavy = stones[i] firstIdx = i }else if(stones[i]>secondHeavy){ secondHeavy = stones[i] secondIdx = i } } if(firstIdx>secondIdx){ let temp = secondIdx secondIdx = firstIdx firstIdx = temp } stones = [...stones.slice(0,firstIdx),...stones.slice(firstIdx+1,secondIdx),...stones.slice(secondIdx+1)] if(firstHeavy!==secondHeavy){ stones.push(firstHeavy-secondHeavy) } return lastStoneWeight(stones) };
내가 짠 코드. 문제대로 차근차근 풀었다.
var lastStoneWeight = function(stones) { //제일 무거운거 두개를 고른다. //두개의 무개가 같다면 둘 다 없앤다. //다르다면, 큰것의 무게에서 작은것의 무게를 빼서 그것만 남긴다. //이것을 stones에 하나만 남을때까지 반복한다. -> 재귀이용. if(stones.length===1) return stones[0] if(stones.length===0) return 0 stones.sort((a,b)=>a-b) const firstHeavy = stones.pop() const secondHeavy = stones.pop() if(firstHeavy!==secondHeavy){ stones.push(firstHeavy-secondHeavy) } return lastStoneWeight(stones) };
훨씬 간단한 코드! 그냥 sort하면 되는것을 for문 돌면서 큰수랑 두번째 큰수 찾았다 ㅎㅎ
속도는 생각보다 별 차이 안남! 메소드써서 그렇겠지
'코딩테스트' 카테고리의 다른 글
[재풀이/릿코드] 62. Unique Paths (0) 2023.05.02 [프로그래머스/javascript] [3차] 방금 그곡 (0) 2023.04.30 [못풀었다/릿코드/javascript]. 567. Permutation in String (0) 2023.03.30 [다시풀기/릿코드/javascript] 102. Binary Tree Level Order Traversal (0) 2023.03.27 [못풀었다/javascript/릿코드] merge two sorted lists (0) 2023.03.24