본문 바로가기

정리60

DFS - 네트워크 프로그래머스 (DFS) - 네트워크 해당 문제는 DFS을 이용한 문제로 반복문을 돌때 해당 컴퓨터의 방문(connected) 여부를 보고 없다면 해당 컴퓨터를 시작으로 DFS 알고리즘을 통해 네트윅을 계속 연결하면서 connected 여부를 업데이트 했습니다. 이런식으로 신규 방문인 경우가 새로운 network의 시작이므로 이때마다 networkCount를 증가시키는 방향으로 답을 구했습니다. public int solution(int n, int[][] computers) { int networkCount = 0; boolean[] connected = new boolean[n]; for (int computerNumber = 0; computerNumber < n; computerNumber++) {.. 2022. 3. 15.
이분탐색 - 입국심사 프로그래머스(이분탐색) - 입국심사 해당 문제는 이분탐색을 이용해 풀면 되는 문제입니다. 문제를 처음 봤을때 생각했던 방식은 우선순위를 통한 풀이입니다. 우선순위의 기준은 각 time + finishTime 으로 했었고, 반복할때마다 큐에서 꺼내고 finishTime 을 업데이트 하여 다시 넣어주는 방식을 생각했습니다. 시간초과가 날 것으로 예상되었지만, 시도해 보았고, 결과 역시 예상대로 시간초과가 되었습니다. public long solution1(int n, int[] times) { long answer = 0; PriorityQueue priorityQueue = new PriorityQueue((o1, o2) -> o1.finishTime + o1.time > o2.finishTime + o2.. 2022. 3. 14.
DFS - 여행경로 프로그래머스 (DFS) - 여행경로 해당 문제는 DFS 관련 문제로 보입니다. 하나의 시작 공항으로 부터 관련 티켓 정보를 통해 하나씩 연결해 가며 최종 티켓 깊이 까지 도달하게 되면 그때까지의 path 정보를 리스트에 넣어주는 방식으로 구현했습니다. 문제에서 최종 경로를 다 구한 후에는 알파벳 순서가 앞서는것 1개를 return 해달라고 했으므로 최종적으로 정렬 후 첫번째 path 정보를 split 하여 요구사항에 맞게 답을 return 하였습니다. private boolean[] used; private List paths; public String[] solution(String[][] tickets) { used = new boolean[tickets.length]; paths = new Arra.. 2022. 3. 11.
DFS/BFS - 타겟 넘버 프로그래머스 (DFS/BFS) - 타겟넘버 해당 문제는 해당 깊이의 원소의 타겟을 우항으로 넘겨 새로운 타겟넘버를 생성하는 식으로 최종 깊이에서 결과가 0인 경우 1을 return하도록 하는 재귀를 통해 문제를 풀었습니다. public int solution(int[] numbers, int target) { return calculate(numbers, 0, target); } private int calculate(int[] numbers, int depth, int target) { if (numbers.length == depth) { return target == 0 ? 1 : 0; } int newPlusTarget = target + numbers[depth]; int newMinusTarg.. 2022. 3. 10.