[프로그래머스 고득점 Kit/Java] 더 맵게

2025. 4. 15. 00:44· Languages/Java
목차
  1. PriorityQueue 사용

 

배열의 모든 값이 K(스코빌 지수) 이상이 될 때까지

가장 낮은 두 개의 음식을 특별한 방법으로 섞는다.

가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)

 

모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 한다.

 

원래는 ArrayList를 만들어 스코빌 지수를 넣고

매번 정렬을 하려고 했다.

그러나 시간 + 정확도 테스트에서 모두 점수를 제대로 받지 못했다.

 

그러던 중 우선순위 큐를 사용해야 함을 알게 됐다.

우선순위 큐는 일반적인 큐와 달리, 들어가는 순서와 상관없이 우선순위가 높은 데이터가 먼저 나가므로

따로 정렬을 해줄 필요가 없어 기존 방식에 비해 훨씬 효율적이다.

 

// 기본형: 우선순위가 낮은 숫자가 먼저 나옴 (작은 숫자)
PriorityQueue<Integer> pQ = new PriorityQueue<>();
 
// 우선순위가 높은 숫자가 먼저 나옴 (큰 숫자)
PriorityQueue<Integer> pQ = new PriorityQueue<>(Collections.reverseOrder());

 

이걸 이용해서 해결한 방식은 다음과 같다.

PriorityQueue 사용

import java.util.*;
import java.io.*;
class Solution {
    public int solution(int[] scoville, int K) {
        int cnt = 0;
        
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        for (int scov : scoville) {
            pq.offer(scov);
        }
        
        while (true) {
            int first = pq.poll();
            if (first >= K) return cnt;
            if (pq.size() < 1) return -1;
            int second = pq.poll();
            pq.offer(first + (second * 2));
            cnt++;
        }
    }
}

 

여기서 또 하나 주의할 점이 있었는데,

문제에서 "모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우 -1을 return" 하라고 했다.

 

따라서 첫 번째 숫자(가장 낮은 스코빌 지수)가 K 이하인데,

pq의 size가 1보다 작다면 (모든 수를 다 poll했는데도 K 이상이 없었다면) -1을 return 해준다.

'Languages > Java' 카테고리의 다른 글

[BOJ 길라잡이/Java] 14일차 #9095 1, 2, 3 더하기  (0) 2025.04.06
[프로그래머스 고득점 Kit/Java] 기능개발  (0) 2025.04.02
[BOJ 길라잡이/Java] 13일차 #1182 부분수열의 합  (0) 2025.04.01
[프로그래머스 고득점 Kit/Java] 같은 숫자는 싫어  (0) 2025.04.01
[BOJ 길라잡이/Java] 12일차 #6603 로또  (0) 2025.03.29
  1. PriorityQueue 사용
'Languages/Java' 카테고리의 다른 글
  • [BOJ 길라잡이/Java] 14일차 #9095 1, 2, 3 더하기
  • [프로그래머스 고득점 Kit/Java] 기능개발
  • [BOJ 길라잡이/Java] 13일차 #1182 부분수열의 합
  • [프로그래머스 고득점 Kit/Java] 같은 숫자는 싫어
효딩
효딩
개ㄱ발은 기세다. 줄여서 객기.
효딩
hyoding
효딩
전체
오늘
어제
  • 분류 전체보기 (245)
    • SKKU SW (30)
      • Computer Architecture (14)
      • Database (4)
      • Computer Network (3)
      • Operating System (7)
      • Mobile App Programming (2)
    • SuperCoding (68)
    • CS (8)
    • Web Programming (19)
    • Cloud (13)
    • Languages (45)
      • Python (8)
      • Java (37)
    • Supporters (8)
      • MoteMote (6)
      • NHN Cloud (2)
    • Certification (27)
      • Network Advisor (14)
      • ADsP (10)
      • Engineer Information Proces.. (3)
    • Finance (9)
      • 경제금융용어 (3)
    • Woori FISA (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • apppaas
  • 코틀린문법
  • 앱개발
  • 네트워크관리사 후기
  • AWS
  • K-디지털트레이닝
  • 네트워크관리사2급 공부방법
  • 우리fis아카데미
  • 코틀린
  • 네트워크관리사 커트라인
  • Kotlin
  • 우리FISA
  • 글로벌소프트웨어캠퍼스
  • rds local 접속
  • 클라우드
  • 네트워크관리사2급 필기
  • 인프라
  • 네트워크관리사
  • 서버배포
  • 봐
  • 우리에프아이에스
  • 네트워크관리사 준비물
  • 네트워크관리사 합격
  • 클라우드서비스개발
  • 서버생성
  • nhn cloud
  • 클라우드 서비스
  • 네트워크관리사2급
  • 서버개발
  • 인프라개발

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
효딩
[프로그래머스 고득점 Kit/Java] 더 맵게
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.