2023.08.31.THU

ronglong·2023년 8월 31일
0

[ 프로그래머스 ]

[ 야근 지수 ]

: 리스트 정렬보다 PriorityQueue가 훨씬 빠르기때문에,,, 앞으로도 적극 활용할 것 같다.

import java.util.*;

class Solution {
    public long solution(int n, int[] works) {
        long answer = 0;
        
        //우선순위 큐에 큰 숫자부터 저장
        PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
        
        for(int w : works){
            queue.add(w);
        }
        
        //1~n번을 돌아가면서, works에서 제일 큰 숫자에서 1씩 뺀다. 
        for(int i=0; i<n; i++){
            if(queue.size()==0){
                break;
            }
            
            int temp = queue.poll();
            temp--;
            if(temp<0){
                continue;
            }
            queue.add(temp);
        }
        
        //야근 피로도 계산
        while(queue.size()>0){
            int num = queue.poll();
            answer += num*num;
        }
        
        return answer;
    }
}

[ 최고의 집합 ]

: 맨 처음에 리스트 사용해서 시간복잡도 효율성 테스트 통과 못 했다가, 생각해보니 배열의 크기를 알 수 있으므로 바로 배열 사용함. 꾸준히 푸니까 구현은 꽤 느는 것 같다.
알고리즘도,, 딱 기다려..^^

class Solution {
    public int[] solution(int n, int s) {
        if(n > s){
            return new int[]{-1};
        }
        
        //자연수 n개의 합이 s이면서, 각 원소의 곱이 최대인 집합을 오름차순으로 리턴하기 
        //나누고 나머지를 하나씩 더하기 
        int share = s/n;
        int remainder = s%n;
        
        int[] answer = new int[n];
        
        for(int i=0; i<n; i++){
            if(i<n - remainder){
                answer[i] = share;
            } else {
                answer[i] = share+1;
            }
        }
        
        return answer;
    }
}

[ 느낀 점 ]

회사 유지보수 업무 중, 운영 중인 프로그램에 에러 신고가 들어왔을 때, 원인 파악하는 게 오래걸린다.
에러 로그도 뜨지 않는 경우가 많아서, 직접 경로를 찾고 DB 및 소스 파일을 뒤져야하는데, 복잡해서 잘 못 찾고 얼타게 됨,,
주임님께서 아주 빠른 도움으로 경로랑 원인 찾아주셔서, 로직 보고 수정은 내가 한 후, 검토 받고 재배포 했다.
차라리 로직 수정은 하겄는디,, 찾는 걸 잘 못 찾겠음,,,
이것도 하다보면 늘겠지...

0개의 댓글

Powered by GraphCDN, the GraphQL CDN