문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
주문을 처리하면서, 손님이 몇명이 최대로 기다리는지 구하면 되는 문제이다.
1. 주문이라는 클래스를 생성한다.
주문시작시간
음료제조시간
2. 주문 배열을 만들어서, 주문시작시간, 음료제조시간을 기록한다.
3. 각 주문마다 주문시작시간과 제조시간을 더해서, 몇명의 손님이 받는지 투포인터를 이용해서 기록한다.
s : 현재 주문 인덱스
e : 주문 할때까지 들어오는 주문의 인덱스
e - s : s 주문 인덱스에 대해, 기다리는 사람의 수
4. e - s 최댓값을 찾는다.
소스코드
class Solution {
private static class Order {
int startTime;
int executeTime;
Order(int startTime, int executeTime) {
this.startTime = startTime;
this.executeTime = executeTime;
}
}
public int solution(int[] menu, int[] order, int k) {
Order[] orders = new Order[order.length];
for (int i = 0; i < order.length; i++) {
orders[i] = new Order(k * i, menu[order[i]]);
}
int time = 0;
int e = 0;
int answer = Integer.MIN_VALUE;
for (int s = 0; s < order.length; s++) {
Order o = orders[s];
if (time < o.startTime) {
time = o.startTime;
}
time += o.executeTime;
while (e < order.length && orders[e].startTime < time) {
e++;
}
answer = Math.max(answer, e - s);
}
return answer;
}
}
실행결과

'Problem Solving > Programmers' 카테고리의 다른 글
| [Programmers] PCCP 기출문제 2번 - 석유 시추 - Java (0) | 2025.07.14 |
|---|---|
| [Programmers] PCCP 모의고사 2회 4번 - 보물 지도 - Java (0) | 2025.07.12 |
| [Programmers] PCCP 모의고사 2회 2번 - 신입사원 교육 - Java (1) | 2025.07.10 |
| [Programmers] PCCP 모의고사 2회 1번 - 실습용 로봇 - Java (0) | 2025.07.09 |
| [Programmers] PCCP 모의고사 1회 4번 - 운영체제 - Java (0) | 2025.07.09 |