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..
최단거리를 구하는 알고리즘은 다양한 방법으로 구현할 수 있다. 최단거리 알고리즘은 코딩테스트에서도 많이 사용되고, 생각보다 최단거리를 구해야할 경우가 종종 있기에 이번 기회에 정리하도록 하였다. 이번에는 자바스크립트로 가장 기본적인 최단거리 알고리즘 방법인 다익스트라(Dijkstra) 알고리즘을 구현해보도록 하였다. 🥩 다익스트라 알고리즘은 최단거리를 구하는데 사용되는 대표적인 알고리즘 중 하나이지만, 그 외에도 벨만-포드 알고리즘, A* 알고리즘, 플로이드-워셜 알고리즘 등 다양한 알고리즘을 통해서 최단거리를 구할 수 있다. 🧀 알고리즘의 선택은 문제의 제약사항과 성능 요구사항에 따라 달라질 수 있다. 다익스트라 알고리즘은 하나의 출발점에서 다른 모든 정점까지의 최단거리를 구하는 알고리즘으로 아래는 다..
이번 문제는 이차원 배열을 방문하면서, 연결된 유효한 값의 범위와 값을 구하는 문제이다. 기본적으로 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(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[..