목록알고리즘 (4)
개발자이야기
가장 먼 노드 Java https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 풀이 최단 경로 알고리즘인 다익스트라 알고리즘을 사용했다. 각 노드의 최단경로로 인접 노드를 방문하며 cost를 구해 가장 큰 값을 가진 노드들을 카운트 하는 방법으로 해결했다. 우선순위큐를 사용하여 인접노드를 방문하기까지의 cost를 구했기 때문에 최단거리를 보장받을 수 있다. public static class Node implements Comparable { int index; int cost; Arr..
알고리즘 입국심사 https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 이분탐색 시간복잡도 O(logn) 주어진 n명의 사람이 주어진 times 배열의 시간을 활용하여 최단시간내에 입국심사를 받으면 되는 문제다. 해당 문제는 이분탐색 카테고리에 되어있다. 사실 이 카테고리 못봤으면 이분탐색으로 생각도 못했을거같다. 많이 풀어봐야겠다. 이분탐색의 기준은 시간기준으로 0 ~ times[가장큰값] * n 을 기준으로 탐색..
public static void main(String[] args) { long[] room = {1,2,3,4,5}; int find = 4; //내가 찾을값 int pivot = 0; int left = 0; int right = room.length-1; while (room[pivot] != find) { pivot = (left+right) / 2; if(find > room[pivot]) { left = pivot+1; } else if(find < room[pivot]) { right = pivot-1; } else { //같은경우 System.out.println(room[pivot]); } } }
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 public static long[] solution(long k, long[] room_number) { long[] answer = new long[room_number.length]; long index = 0; for(long item : room_number) { long d = recu(item); answer[Math.toIntExact(index)] = d; index = index+..