이번 문제는 C++, java, python3 밖에 언어를 지원하지 않아서 많이들 안푸셨을거같은데요
문제를 보면

잘 안보이시다면
https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
를 참고해주세요~
문제풀이
import java.util.*;
public class Solution {
public static int solution(int[] scoville, int K) {
//우선순위 큐(숫자가 낮은수부터) 정의
PriorityQueue<Integer> pq = new PriorityQueue<>();
//int배열을 큐에 넣어준다
for(int i = 0; i < scoville.length; i++) {
pq.add(scoville[i]);
}
int answer = 0;
//모든 음식이 스코빌지수 K보다 커야하므로 K보다 작을때까지 반복
while(pq.peek() < K) {
if (pq.size() == 1) {
return -1;
}
int first = pq.poll(); //가장 맵지 않은 음식
int second = pq.poll(); //두번째로 맵지 않은 음식
int result = first + (second * 2); //섞은음식의 스코빌지수 계산
pq.add(result); //결과값 넣어준다
answer++;
}
return answer;
}
}
이번 문제 역시 저번에 풀었던 프린터 문제같이 PriorityQueue를 사용해서 풀 수 있는 문제 같아서 가져와봤습니다.
이번문제의 포인트는 낮은 수 2개를 수식에 넣어서 계산한 결과를 다시 Queue에 담아서 비교를 하는데 있습니다.
PriorityQueue에 대한 자세한 설명은 이전 포스팅에 남겨놨으니 참고해주세요.
[Programmers] 프로그래머스 42587 프린터 - java
이번에는 프로그래머스에서 스택/큐 카테고리에 있는 프린터 문제를 풀어봤는데요 아직 알고리즘도 그렇고 문법도 뭔가 어려움이 많아 고민도 많이하고 시간도 많이 걸린거 같아요 먼저 문제
darmk.tistory.com
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 프로그래머스 12926 시저암호 - java (0) | 2021.07.17 |
---|---|
[Programmers] 프로그래머스 12912 두 정수 사이의 합 - java (2) | 2021.07.09 |
[Programmers] 프로그래머스 1845 폰켓몬 - java (1) | 2021.07.01 |
[Programmers] 프로그래머스 42587 프린터 - java (2) | 2021.06.13 |