Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 넥사크로
- 코틀린
- db
- error
- 생성
- 프로그래머스
- 오라클
- Eclipse
- jquery
- 함수
- GitHub
- JavaScript
- 알고리즘
- 쿼리
- 방법
- Git
- kotlin
- JPA
- Security
- 에러
- mybatis
- Vue
- aws
- 스프링
- 시큐리티
- IntelliJ
- 자바
- Spring
- oracle
- Java
Archives
- Today
- Total
송민준의 개발노트
프로그래머스-level2-라면공장 본문
https://programmers.co.kr/learn/courses/30/lessons/42629
자료구조는 우선순위 큐를 사용했다.
이유는 날짜에 따라 공급이 되는데 제일 큰 공급이 들어가야 한다. 그러자면 역정렬이 되어야 하는데 우선순위 큐를 써주면 간단해진다.
그리고 여기서 구하고자 하는 것은 최소한 공급한 공급 횟수이다.
즉 그 말은 무엇이냐 하면 공급 일자에 맞게 stock에 추가할 필요가 없다는 것이다.
공급필요일자와 다음 공급일자 사이에 재고가 떨어지면 공급 필요일자의 값을 넣어주면 되는 것이다.
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
class Solution {
public int solution(int stock, int[] dates, int[] supplies, int k) {
int result = 0;
Queue<Integer> priorityQueue = new PriorityQueue<>(Comparator.reverseOrder());
// 우선순위 큐 생성
int SupplyIndex = 0;
for(int index = 0; index < k; index++) { // k일까지 반복
// 공급 가능한지 체크, 일자가 공급 일자하고 일치하는지
if(SupplyIndex < dates.length && index == dates[SupplyIndex]) {
priorityQueue.add(supplies[SupplyIndex++]);
}
// 재고 소진시 보급
if(stock == 0) {
stock += priorityQueue.poll();
result++;
}
stock--; //재고 소진
}
return result;
}
}
고민했던 흔적...(풀다가 스터디원이 우선순위 큐를 써보라 해서 코드 버림...)
public int solution(int stock, int[] dates, int[] supplies, int k) {
// 공급일까지
int day = 1;
int dateIndex = 0;
int result = 0;
// k일까지 while 돌림
while(day == k) {
stock--; // 하루마다 -1 재고소진
if(dates[dateIndex] == day) { //날짜가 공급일과 일치하면
if(dateIndex < dates.length) dateIndex++; // 인덱스 1증가
if(isSupply(stock, Arrays.copyOfRange(dates, dateIndex, dateIndex), Arrays.copyOfRange(supplies, dateIndex, dateIndex))) {
stock += supplies[dateIndex]; // 재고에 투입
result++; // 공급횟수 1증가
}
}
day++;
}
return result;
}
public boolean isSupply(int stock, int[] dates, int[] supplies) {
int index = 0;
int gap = dates[1]-dates[0];
if(stock-gap > )
return true;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 크레인 인형뽑기 게임(카카오) (0) | 2021.01.27 |
---|---|
프로그래머스-level2-영어 끝말잇기 (0) | 2019.12.09 |
프로그래머스-level2-전화번호 목록 (0) | 2019.12.02 |
프로그래머스-level2-쇠막대기 (0) | 2019.12.02 |
프로그래머스-level2-기능개발 (0) | 2019.12.02 |