본문 바로가기

BFS3

[프로그래머스] Lv3 문제풀이7(feat. JAVA) 디스크 컨트롤 import java.util.*; import java.util.stream.IntStream; class Solution { class Job { int start; int cost; Job(int start, int cost) { this.start = start; this.cost = cost; } } public int solution(int[][] jobs) { int answer = 0; PriorityQueue heap = new PriorityQueue((o1, o2) -> { if(o1.start != o2.start) return o1.start - o2.start; else return o1.cost - o2.cost; }); IntStream.range(0, jobs.. 2023. 10. 13.
[프로그래머스] Lv3 문제풀이2(feat. JAVA) 야근 지수 import java.util.*; class Solution { public long solution(int n, int[] works) { long answer = 0; Arrays.sort(works); long[] cnt = new long[works[works.length-1] + 1]; long sum = 0; for(int a : works) { sum += a; cnt[a]++; } if(sum 1; i--) { if(cnt[i] < n) { cnt[i-1] += cnt[i]; n -= cnt[i]; cnt[i] = 0; } else { cnt[i] -= n; cnt[i-1] += n; n = 0; break; } } if(n!=0) cnt[1] -= n; for(int i = .. 2023. 10. 6.
[알고리즘]그래프4 - BFS(feat. Java) BFS란? 저번 글에서 알아본 DFS는 깊이 우선 탐색이었다면 BFS(Breadth-First Search) 너비 우선 탐색으로서 DFS와 함께 코딩 문제에 단골로 등장하는 그래프 탐색 알고리즘이다. DFS는 제일 깊이 있는 노드까지 탐색한 뒤에 돌아오는 방식이면, BFS는 인접한 노드를 먼저 탐색을 하는 알고리즘이다. 그렇기 때문에 재귀(Stack 구조)를 활용하여 구현했던 DFS와 달리, BFS는 Queue를 통해 구현을 하게 되고 Queue를 생각하면 이해하는 것도 쉽습니다. 저번 시간에 다루었던 예제를 또 다루어보면, 1번 노드를 큐에 넣은 후 방문처리 큐에서 노드를 꺼낸 후 인접 노드를 큐에 넣고 방문 처리 바로 위의 과정을 반복 1번 노드 꺼낸 후 2, 3, 8번 노드가 큐에 들어감 (Queu.. 2023. 9. 21.
728x90
반응형