문제
https://school.programmers.co.kr/learn/courses/30/lessons/150369?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
import java.util.*;
class Solution {
public class house{
int index;
int value;
house(int index, int value){
this.index=index;
this.value=value;
}
}
public long solution(int cap, int n, int[] deliveries, int[] pickups) {
long answer = 0;
Queue<house> deli=new LinkedList<>();
Queue<house> pick=new LinkedList<>();
for(int i=deliveries.length-1; i>-1; i--){
if(deliveries[i]!=0){
deli.add(new house(i, deliveries[i]));
}
if(pickups[i]!=0){
pick.add(new house(i, pickups[i]));
}
}
while(true){
if(deli.isEmpty() && pick.isEmpty()) break;
// 가장 멀리 있는 집
int temp=0;
if(!deli.isEmpty()){
temp=deli.peek().index;
}
if(!pick.isEmpty()){
temp=Math.max(temp, pick.peek().index);
}
answer+=((temp+1)*2);
// 배달
int cur=cap;
while(!deli.isEmpty()){
house cur_h = deli.peek();
if(cur_h.value<=cur){
cur-=cur_h.value;
deli.poll();
}
else{
cur_h.value-=cur;
break;
}
}
// 수거
cur=cap;
while(!pick.isEmpty()){
house cur_h = pick.peek();
if(cur_h.value<=cur){
cur-=cur_h.value;
pick.poll();
}
else{
cur_h.value-=cur;
break;
}
}
}
return answer;
}
}
'문제풀이 > 기타' 카테고리의 다른 글
[JAVA] [구간합] 백준 11660 구간 합 구하기 5 (0) | 2023.07.09 |
---|---|
[JAVA] Pro 이모티콘 할인행사 (0) | 2023.07.07 |
[JAVA] Pro 호텔 대실 (0) | 2023.07.04 |
[JAVA] [기타] Pro 시소 짝꿍 (0) | 2023.07.03 |
[JAVA] [수학] Pro 당구 연습 (0) | 2023.06.28 |