728x90
728x90
function solution(s) { const answer = []; const obj = {}; s.split("").forEach((el, idx) => { if(obj[el] === undefined) { answer.push(-1); } else { answer.push(idx - obj[el]); } obj[el] = idx; }) return answer; } 비교적 쉬운 문제였지만, 고려해야할 점이 있었다. 객체로 각 문자가 등장한 최신의 인덱스를 계산하였는데, 해당 문자의 인덱스를 계산하는 과정에서 오류가 있었다. 0이나 undefined은 모두 falsy이므로, 조건문에서 거짓으로 처리되어버리는 문제가 있었다. 따라서, 0을 인덱스로 가질 때 문제가 발생했었다. 정확히 undefin..
const checkValid = (wantObj, discountObj) => { for(let key in wantObj) { if(wantObj[key] > (discountObj[key] || 0)) { return false; } } return true; } function solution(want, number, discount) { let answer = 0; const wantObj = {}; for(let i = 0; i < want.length; i++) { wantObj[want[i]] = number[i]; } const discountObj = {}; for(let i = 0; i
function solution(k, tangerine) { const weight = {} tangerine.forEach(el => { if(!weight[el]) { weight[el] = 1; }else { weight[el] += 1; } }); const sorted = Object .values(weight) .sort((a, b) => b - a); let answer = 0; for(let i = 0; i < sorted.length; i++) { k -= sorted[i]; answer++; if(k
function solution(k, score) { const answer = []; let legend = []; for(let i of score) { if(legend.length a - b); if(legend[0] < i) { legend[0] = i; } } answer.push(Math.min(...legend)); } return answer; } 가장 낮은 숫자의 점수를 매번 새로운 점수와 비교하여 가장 높은 최상위 점수 k를 유지하는 것이 중요했던 문제였다. 힙정렬을 통해서 값이 매번 들어올 때 정렬해주는 알고리즘을 구현했으면 더 좋았겠지만, 간단하게 구현하였다.