컴굥일지
[Programmers/프로그래머스][C++] 카페 확장 (PCCP 모의고사 2회 3번) 본문
반응형
문제
https://school.programmers.co.kr/learn/courses/15009/lessons/121689
문제 내용
손님은 k초마다 카페에 들어온다.
각 메뉴를 만드는 시간을 담은 menu 배열을 입력받고, 카페에 오는 손님이 시키는 주문 내역인 order 배열을 입력받는다.
메뉴는 순서대로 만들어지며, 손님들은 자신의 음료가 나오면 바로 카페를 나간다.
최대 몇 명의 손님이 동시에 카페에 존재했는지를 구하면 된다.
(같은 시각에 손님이 들어오고 나가는 경우, 카페에 있던 손님이 먼저 나가고, 그 이후에 새로운 손님이 들어온다.)
문제 풀이
음료 만드는 시간이 길어 여러 명의 손님이 기다리는 경우도 있지만, 음료 만드는 시간이 짧아 카페에 손님이 아무도 없는 경우도 생긴다. (손님은 반드시 k초마다 들어오기 때문)
위 경우를 잘 체크하여 문제를 해결해야 한다.
코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> menu, vector<int> order, int k) {
vector<int> menu_time; // 각각의 메뉴가 얼마나 걸리는지
int ssum=0;
for(int i=0;i<order.size();i++){
menu_time.push_back(menu[order[i]]);
ssum+=menu_time[i];
}
int people=0;
int idx=0;
int prevOutTime=0;
int mmax=-1;
for(int i=0;i<ssum;i++){
//나가는게 먼저
if(prevOutTime+menu_time[idx]==i){
people--;
prevOutTime=i;
idx++;
}
//들어오는게 나중
if(i%k==0 && i/k < order.size()) {
people++;
if(k*idx>prevOutTime) prevOutTime=i;
}
mmax=max(mmax, people);
}
return mmax;
}
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 1260][C++] DFS와 BFS (0) | 2023.08.20 |
---|---|
[BOJ/백준 1715][C++] 카드 정렬하기 (0) | 2023.08.20 |
[Programmers/프로그래머스][C++] 신입사원 교육 (PCCP 모의고사 2회 2번) (0) | 2023.08.19 |
[Programmers/프로그래머스][C++] 실습용 로봇 (PCCP 모의고사 2회 1번) (0) | 2023.08.19 |
[Programmers/프로그래머스][C++] 유전법칙 (PCCP 모의고사 1회 3번) (0) | 2023.08.19 |
Comments