일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 기업분석
- 1062번 가르침
- 온라인쇼핑
- 백준 2252 자바
- 백준 1700 자바
- 백준 1193
- 조인종류
- 데이터베이스 기초지식
- 팀프로젝트
- 라이브커머스
- 백준 괄호의값 자바
- 개발일지
- Union Find
- 백준 최소비용구하기 자바
- 자바 2869
- 줄세우기 위상정렬
- 이커머스
- 자바 1193
- 웹 기술면접
- Spring Security
- 2504 괄호의값 자바
- 프로그래머스
- 인사관리사이트
- 괄호의값 스택
- 커머스기사
- 다익스트라 최소비용구하기
- 백준 멀티탭스케줄링 자바
- 백준 1806 자바
- 백준 줄세우기 자바
- 유니온 파인드
Archives
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 기업분석
- 1062번 가르침
- 온라인쇼핑
- 백준 2252 자바
- 백준 1700 자바
- 백준 1193
- 조인종류
- 데이터베이스 기초지식
- 팀프로젝트
- 라이브커머스
- 백준 괄호의값 자바
- 개발일지
- Union Find
- 백준 최소비용구하기 자바
- 자바 2869
- 줄세우기 위상정렬
- 이커머스
- 자바 1193
- 웹 기술면접
- Spring Security
- 2504 괄호의값 자바
- 프로그래머스
- 인사관리사이트
- 괄호의값 스택
- 커머스기사
- 다익스트라 최소비용구하기
- 백준 멀티탭스케줄링 자바
- 백준 1806 자바
- 백준 줄세우기 자바
- 유니온 파인드
Archives
- Today
- Total
JumpUp
프로그래머스 [더 맵게] 본문
문제를 읽으며 풀이과정을 아래와 같이 그려보았다.
조건1의 No return 0;은 처음부터 조합할 필요가 없는 scoville배열이 주어진 경우를 표현한 것이다.
조건 3의 yes return -1;은 k미만인 음식이 존재하지 않을 때까지 조합하다가 이제 더이상 조합할 음식이 없어졌을 경우(음식이 1개인 경우) 그 음식마저 k미만이라면 제한사항 4번째처럼 -1를 return 해준다는 것이다.
이를 코드로 구현해보면,
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int result = 0;
boolean flag = false;
//조건 1. K 미만인 음식이 존재하는가?
for(int i=0;i<scoville.length;i++){
if(scoville[i]<K) flag=true;
}
//조건1 -> 존재하면 우선순위 큐에 추가, 아니라면 return 0;
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
if(flag){
for(int i:scoville){
priorityQueue.offer(i);
}
}else return 0;
//조건2. 음식이 1개인가?(조합하다보면 발생하기에)
while(priorityQueue.size()>=2){
//조합한다
priorityQueue.offer(priorityQueue.poll()+(priorityQueue.poll()*2));
result++;
//조건2-1. 여전히 k 미만인 음식이 존재할 경우 loop 조건검사 반복, 아닐경우 return result(조합횟수)
if(priorityQueue.peek()>=K){
return result;
}
}
//조건3. 음식이 한 개인 경우, 그 음식의 스코빌이 K미만인가?
if(priorityQueue.size()==1 && priorityQueue.poll()<K) result = -1;
return result;
}
}
728x90
'알고리즘' 카테고리의 다른 글
백준 [N15649 - N과 M(1)] (0) | 2021.08.12 |
---|---|
[SQL] MySQL 기출 문법 (0) | 2021.08.11 |
[자료구조] HEAP(힙) (0) | 2021.07.23 |
프로그래머스 [다리를 지나는 트럭] (0) | 2021.07.15 |
프로그래머스 [베스트앨범] (0) | 2021.07.07 |