본문 바로가기

알고리즘7

프로그래머스 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.
프로그래머스 42579번 베스트앨범 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42579 풀이 예전에 푼 문제를 다시 풀었는데, 예전의 풀이(풀이1)가 더 성능이 좋았다. 풀이1 : 장르별로 묶어서 장르 내에서 각각 sorting 후 장르별로 상위2개씩 return 풀이2 : 장르에 대한 총 재생수만 hashmap으로 저장 후, 전체 sorting, 장르별로 상위2개씩 return 풀이1 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; class Solution { class Genre { int sum; ArrayList.. 2022. 7. 31.