본문 바로가기

취준7

프로그래머스 42626번 더 맵게 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42626 풀이 최대값, 최소값이 나오는 문제는 Heap을 사용하면 됩니다. Java에서는 Heap 대신에 PriorityQueue를 사용할 수 있습니다. 최소/최대값 확인: PriorityQueue.peek() 최소/최대값 추출 및 확인: PriorityQueue.poll() 시간 복잡도는 최초 항목 수만큼 순회하니 n, n-1만큼 순회하면서 최소값 2개 뽑고(2), 계산된 스코빌 값을 다시 add(logn) 하므로, n + n(2 + logn) = O(3n + nlogn) 이 되겠습니다. 배열을 사용했으면 O(n^2)가 되었을 것입니다. import java.util.*; class Solut.. 2022. 8. 28.
프로그래머스 12906번 같은 숫자는 싫어 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12906 풀이 시간복잡도 O(n)의 문제로, 현재 값을 따로 저장하여 비교하거나, stack을 이용하면 간단히 해결 가능한 문제입니다. import java.util.*; public class Solution { public int[] solution(int[] arr) { ArrayList distinctList = new ArrayList(); distinctList.add(arr[0]); for(int i = 1; i < arr.length; ++i) { if(distinctList.get(distinctList.size()-1) != arr[i]) { distinctList.add(ar.. 2022. 8. 22.
프로그래머스 42587번 프린터 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42587 풀이 큐의 특성을 활용하는 기본적인 문제..인데, 구현하는 데서 삽질을 너무 많이 한 문제입니다.. input이 원래 순서이고, output이 그 프로세스가 처리되는 순서이므로, 원래 순서는 저장되어 있어야 합니다. 그러므로 원래 순서(index), 우선순위(priority)를 함께 담는 Pair class를 구현하여 사용했습니다. 시간 복잡도는 뒤에 높은 우선순위가 있는지 판단하는 계산 때문에, O(n^2) 입니다. HashMap을 사용했으면, 더 효율적으로 풀 수 있었겠지만, 문제에서 제시한 최대 길이가 100이어서, 그냥 풀었습니다. 실전에서는 이런 거 고민할 시간도 아깝다고 생각.. 2022. 8. 10.
프로그래머스 42586번 기능 개발 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42586 풀이 간단한 구현 문제 라고 생각했으나, 뇌가 굳었는지 배포 그룹을 묶는 부분에서 좀 막혔다. 풀이 1. 작업별로 처리일수를 계산한다(이건 쉬움) 2. 처리일수 배열을 순회하면서 앞의 처리일수가 뒤의 처리일수보다 높으면, 함께 배포해야 하므로, count하는 방식으로 계산. import java.util.*; class Solution { public int[] arrayListToArray(ArrayList input) { int[] result = new int[input.size()]; for(int i = 0; i < input.size(); ++i) { result[i] = i.. 2022. 8. 8.