[프로그래머스 알고리즘 고득점 Kit][그리디][Java] 섬 연결하기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr크루스칼 알고리즘을 사용해 최소 신장 트리를 만든다.모든 다리를 비용 기준으로 오름차순 정렬한다.비용이 작은 다리부터 확인한다.두 섬의 대표가 다르면 사이클이 발생하지 않으므로 연결한다.해당 다리의 비용을 minCost에 더하고 두 집합을 합친다.Union-Findfind(): 섬이 속한 집합의 대표를 찾고 경로를 압축한다.union(): 서로 다른 두 집합을 하나로 합친다.p[x] 시간복잡도다리 정렬: O(E log E)Union-Find: 약 O(E)..
[프로그래머스 알고리즘 고득점 Kit][그리디][Java] 구명보트
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 사람들의 몸무게를 오름차순으로 정렬하고, 가장 가벼운 사람과 가장 무거운 사람을 비교한다.두 사람의 무게 합이 제한을 초과하면 가장 무거운 사람만 태운다.제한 이하라면 두 사람을 함께 태운다.구조한 사람의 수가 전체 인원과 같아질 때까지 반복한다.가장 무거운 사람이 가장 가벼운 사람과도 함께 탈 수 없다면 누구와도 함께 탈 수 없으므로 혼자 태워도 된다. ※ 마지막 한 명이 남으면 동일한 인덱스의 무게를 두 번 더하게 되지만, 보트 수는 정확히 한 번 ..
[프로그래머스 알고리즘 고득점 Kit][그리디][Java] 큰 수 만들기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 큰 수는 앞자리 숫자가 클수록 유리하므로 StringBuilder를 스택처럼 사용한다.숫자를 왼쪽부터 확인→ 현재 숫자가 저장된 마지막 숫자보다 크면 마지막 숫자 삭제→ 삭제 횟수가 k가 되거나 더 이상 작은 숫자가 없을 때까지 반복→ 현재 숫자 추가 다음 숫자가 더 클 때만 삭제하므로오름차순인 경우는 삭제 횟수가 남을 수 있음 그래서 모든 숫자를 순회하고도 삭제 횟수가 남았다면 뒤에서부터 삭제를 해야함 각 숫자는 한 번 추가되고 최대 한 번 삭제..
[프로그래머스 알고리즘 고득점 Kit][힙(Heap)][Java] 디스크 컨트롤러
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 작업을 요청 시각 기준으로 정렬한 뒤, 현재 시각까지 요청된 작업만 우선순위 큐에 넣는다.우선순위 큐에서는 다음 순서로 작업을 선택한다.소요 시간 → 요청 시각 → 작업 번호 전체 흐름은 다음과 같다.작업을 요청 시각순으로 정렬→ 대기 큐가 비었다면 다음 요청 시각까지 이동→ 현재 시각까지 요청된 작업을 모두 대기 큐에 추가→ 우선순위가 높은 작업 실행→ 종료 시각 - 요청 시각을 반환 시간에 누적→ 모든 작업의 평균 반환 시간 계산 waitingInd..
[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 주식가격
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 스택에는 아직 가격이 떨어진 시점을 찾지 못한 인덱스를 저장한다.현재 가격이 스택 맨 위 인덱스의 가격보다 낮다면, 해당 주식은 현재 시점에 처음 가격이 떨어진 것이다.answer[lastIdx] = i - lastIdx; 가격이 떨어진 인덱스를 계속 제거하기 때문에 스택의 가격은 아래에서 위로 비감소 순서를 유지한다.전체 순회 후 스택에 남은 인덱스는 끝까지 가격이 떨어지지 않은 경우이므로 마지막 시점까지의 시간을 계산한다.answer[idx] = p..
[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 다리를 지나는 트럭
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 핵심트럭은 1초에 1칸씩 이동 (지문엔 명시 안 되어 있고, 예시 표로 유추해야 함)트럭 1대가 다리를 완전히 통과하는 데 정확히 bridge_length초 소요다리 위 트럭들의 무게 합이 weight를 넘으면 안 됨 (대기 중인 트럭 무게는 무시)풀이 전략큐 2개로 관리: waitingQ(아직 다리에 안 오른 트럭), bridgeQ(현재 다리 위 트럭, {진입시각, 무게} 저장)time을 1씩 증가시키며 매초 두 단계를 순서대로 체크내리기: br..