https://school.programmers.co.kr/learn/courses/30/lessons/42626
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 풀이]
우선순위 큐를 이용하여 문제를 풀었습니다.
해당 문제는 소코빌 지수를 몇번안에 만들 수 있는지를 찾는 문제 였으며, 로직은 아래와 같습니다.
- 배열로 주어진 스코빌 지수들을 우선순위큐에 추가해줍니다.
- 큐에 원소가 없을 때까지 큐를 순회합니다.
- 가장 앞에 있는 원소가 스코빌 지수보다 클 경우 횟수를 반환합니다.
- 큐에 값이 두개 미만으로 존재할 경우 -1을 반환합니다.
- 4, 5번의 경우가 아니면 횟수를 +1 해줍니다.
[JAVA]
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int item : scoville)
pq.add(item);
while(!pq.isEmpty()){
int min = (int)pq.poll();
if(min >= K)
break;
else if(pq.isEmpty()){
answer = -1;
}
else{
pq.add(min + ((int)pq.poll() * 2));
answer++;
}
}
return answer;
}
}
'algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스_소수 찾기(JAVA) (0) | 2022.08.06 |
---|---|
프로그래머스_가장 큰 수(JAVA) (0) | 2022.08.06 |
프로그래머스_체육복(JAVA) (0) | 2022.07.27 |
프로그래머스_최소직사각형(JAVA) (0) | 2022.07.27 |
프로그래머스_같은 숫자는 싫어(JAVA) (0) | 2022.07.25 |