Algorithm/Programmers

[Programmers] 프로그래머스 42626 더 맵게 - java

담크 2021. 6. 17. 22:26

이번 문제는 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에 대한 자세한 설명은 이전 포스팅에 남겨놨으니 참고해주세요.

 

https://darmk.tistory.com/entry/Programmers-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-42587-%ED%94%84%EB%A6%B0%ED%84%B0-java

 

[Programmers] 프로그래머스 42587 프린터 - java

이번에는 프로그래머스에서 스택/큐 카테고리에 있는 프린터 문제를 풀어봤는데요 아직 알고리즘도 그렇고 문법도 뭔가 어려움이 많아 고민도 많이하고 시간도 많이 걸린거 같아요 먼저 문제

darmk.tistory.com