728x90
728x90
처음에는 DFS 방법으로 문제에 접근하였다. function solution(x, y, n) { let minTry = 1000000; const dfs = (num, tryCount) => { if(num > y) { return; } else if(num === y) { if(minTry > tryCount) { minTry = tryCount; } return; } dfs(num + n, tryCount + 1); dfs(num * 2, tryCount + 1); dfs(num * 3, tryCount + 1); } dfs(x, 0); return minTry === 1000000 ? -1 : minTry; } 하지만, 시간초과 문제가 발생하였다. 문제를 다시 생각해보니, 최단거리를 찾는 것과 유사..
function solution(numbers) { const answer = []; for(let i = 0; i numbers[i]) { tmp = numbers[j]; break; } } answer.push(tmp); } return answer; } 일단, 맨 처음에 가장 간단한 방법으로 구현했다. 하지만, 역시 시간 초과 문제가 발생하였다. 스택을 사용하여 해결할 수 있다는 조언을 듣고, 다음과 같이 코드를 수정하여 문제를 해결하였다. 값이 증가하는 추세와 하락하는 추세일 때를 구분하여 코드를 작성한다. functi..
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