: 리스트 정렬보다 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 및 소스 파일을 뒤져야하는데, 복잡해서 잘 못 찾고 얼타게 됨,,
주임님께서 아주 빠른 도움으로 경로랑 원인 찾아주셔서, 로직 보고 수정은 내가 한 후, 검토 받고 재배포 했다.
차라리 로직 수정은 하겄는디,, 찾는 걸 잘 못 찾겠음,,,
이것도 하다보면 늘겠지...