본문 바로가기

Algorithm45

Level3. 프로그래머스 방문 길이 - JavaScript 문제가 길어서 예시 한 개는 넣지 않았습니다. 문제는 아래 링크에서 확인할 수 있습니다 programmers.co.kr/learn/courses/30/lessons/49994 문제 접근 문제를 보면 이동 시키는 건 간단하지만 같은 경로인지 판별하는게 까다로워 보입니다. 우선, 이동할 수 있는 최대 위치는 x좌표 5와 -5 y좌표 5와 -5지점 입니다. 이 안에서는 자유롭게 이동가능합니다. 이동 경로를 파악하기 위해 경로를 object의 key값으로 설정했습니다. key 값은 xy좌표 to 다음 xy좌표로 만들었습니다. 즉 U 명령으로 (0,0)에서 (1,0)으로 이동했다면 경로 key값은 0,0 to 1,0이 됩니다. 여기서 문제는 UD이라는 명령일 때 같은 경로를 공유 합니다. 예를 들어, 좌표 (0,.. 2020. 10. 30.
Level3. 프로그래머스 점프와 순간 이동 - JavaScript function solution(n) { var ans = 0; while( n !== 0) { if( n % 2 === 0) n = n/2; else { ans ++; n = n-1; } } return ans; } 문제 설명 (현재 이동 거리)*2 순간이동은 이동 비용이 0 현재거리 +1 점프는 이동 비용이 1이다. 목표 지점 n까지 가는 최소 비용을 구해야 하기 때문에 최대한 순간이동을 하는게 맞다. 처음에는 BFS 최단 거리 구하는 문제인줄 알고 BFS로 구현했다. 그랬더니 정확성 테스트는 통과 하지만 효율성 테스트를 단 하나도 통과하지 못했다. ㅠㅠ 아래는 BFS로 짠 코드이다. 더보기 // 1. 순간이동으로 방문 할 수 있는 정점 방문 // 2. 한 칸 이동 // 3. 1번 부터 반복 func.. 2020. 10. 30.
Level3. 프로그래머스 네트워크(DFS/BFS) - JavaScript function solution(n, computers) { let answer = 0; const visitedNode = []; for (let i = 0; i { if (!isConnected || visitedNode[nextNodeI.. 2020. 10. 29.
Level3. 프로그래머스 베스트앨범 - JavaScript // 장르 순위 매기기 // 해당 장르에서 많이 재생된 노래 순위 매기기 // 재생된 노래가 같다면 고유번호 낮은것을 앞으로 function solution(genres, plays) { var answer = []; const object = {}; for(let id = 0; id < genres.length; id++ ){ const genre = genres[id]; const count = plays[id]; if( object[genre] === undefined ) object[genre] = { sum: 0, plays: [] } object[genre].sum += count; object[genre].plays.push( { id, count } ); }; let sortedArr = .. 2020. 10. 28.