728x90
728x90
이번 문제는 간단하게 생각하면, 이중 for문을 사용하여 계산할 수 있는 문제였다. 본질적으로 배열을 둘로 나누어 양 쪽의 값을 비교하는 문제였다. 따라서, 시간초과를 내지 않으며 문제를 해결하기 위해서 객체를 사용하여 배열의 데이터를 관리하였다. function solution(topping) { let answer = 0; const left = {}; let leftCount = 0; const right = {}; let rightCount = 0; topping.forEach(el => { if(!left[el]) { left[el] = 1; leftCount++; } else { left[el] += 1; } }); for(let t of topping) { if(right[t]) { righ..
이번 문제는 이차원 배열을 방문하면서, 연결된 유효한 값의 범위와 값을 구하는 문제이다. 기본적으로 dfs방식을 사용하였으며, 방문했는지 확인할 수 있는 값을 설정하여 문제를 해결하였다. function solution(maps) { // X는 바다, 숫자는 무인도 // 상하좌우로 연결된 무인도의 숫자의 합은 머물 수 있는 날짜 수 const answer = []; const checkValid = (x, y) => maps.length - 1 >= x && x >= 0 && maps[x].length - 1 >= y && y >= 0; const mapDfs = (visited, x, y) => { // x, y 방문 let sum = parseInt(maps[x][y]); visited[x][y] =..
처음에 작성한 코드는 다음과 같았다. function solution(weights) { let answer = 0; // 2 3 4 미리 구하기 const weightsObj = {}; weights.forEach(el => { if(!weightsObj[el]) { weightsObj[el] = [2, 3, 4].map(item => item * el); } }) for(let i = 0; i < weights.length - 1; i++) { const now = weightsObj[weights[i]]; for(let j = i + 1; j < weights.length; j++) { const weight = weights[j]; let checker = false; weightsObj[weig..
사실 이번 문제는 문제를 푸는데 애를 많이 먹었고, 검색을 통해서 어떻게 문제에 접근해야할지 알아보았다. 스스로 해결한 문제가 아니어서 아쉽지만, 이런 문제에서 당황하지 않고 어떻게 접근하면 좋을지 생각할 수 있었던 것 같다. function solution(targets) { let answer = 0; let prevRight = -1; const sorted = targets.sort((a, b) => a[1] - b[1]); for(let i = 0; i = prevRight) { prevRight = right; ans..
기존에 주어지는 배열의 순서를 바꾸어 정답을 내야하는 문제였다. 일단, 가장 간단한 방법으로 문제를 접근해보았다. function solution(players, callings) { const answer = [...players]; callings.forEach(el => { const idx = answer.indexOf(el); [answer[idx - 1], answer[idx]] = [answer[idx], answer[idx - 1]]; }) return answer; } 정답은 낼 수 있었지만, 시간초과가 발생하여 다른 방법으로 문제의 해결 방법을 모색하였다. 아무래도 indexOf가 많은 비용이 발생하지 않았나 싶다. 그래서 다른 방법으로 객체를 사용하는 방법을 생각했다. function..
이번에 푼 연습문제는 전에 풀었던 것 같은 유형의 문제로, 배열의 데이터를 가공하여 다른 주어진 데이터와 연관짓는 문제였다. 이번에 문제를 풀 때는 최대한 고차함수를 이용해보기로 하였다. function solution(name, yearning, photo) { const answer = []; const scoreObj = {}; for(let i = 0; i arr.length === 1 ? (scoreObj[arr[0]] || 0) : arr.reduce((acc, cur) => { let accTmp = acc; let curTmp = scoreObj[..