import java.util.*;
class Solution {
public int solution(int[] ability, int number) { // ability 사원들의 능력치 배열 number 교육횟수
int answer = 0; //초기화
PriorityQueue<Integer> pq = new PriorityQueue<>(); //우선순위 q
for(int a : ability) { //능력치들을 전부 우선순위 배열에 넣음
pq.add(a);
answer += a;
}
for(int i = 0; i < number; i++) { //교육횟수만큼 반복
int sum = pq.remove() + pq.remove(); //능력치가 작은 = 가장작은수 2개를 꺼내서 더하고
pq.add(sum); //두번 다시 q에 넣어주기
pq.add(sum);
answer += sum; //능력치 최소합
}
return answer;
}
}
1.우선순위 q를 사용할것
2.q에서 가장 작은 두 수를 꺼내고 더하고 난 후 q에 두번 넣어줄것
'JAVA' 카테고리의 다른 글
백준 11723 집합 (0) | 2023.02.12 |
---|---|
백준 2529번 부등호 java (0) | 2023.02.04 |
[PCCP 모의고사 #2] 실습용 로봇 (0) | 2023.01.15 |
[PCCP 모의고사 #1] 운영체제 (0) | 2023.01.12 |
프로그래머스 외톨이 알파벳 (1) | 2022.12.21 |