728x90
문제요약!
시간대별로 호텔 대실 시간들을 리스트로 주고 최소객실수를 구하는 문제입니다.
시간은
{ {"09:10", "10:10"},{"10:20", "12:20"}} 식으로 주어지기에
분단위로 배열을 할당해 주어 풀어주면 쉽게 풀 수 있었습니다.
+++
예약시간들도 하루동안의 내용들이고
- 예약 시각이 자정을 넘어가는 경우는 없다
라는 조건도 포함되어 있어 예외없이 풀어낼 수 있었습니다.
그럼 바로 코드 시작!
아래처럼 먼저 하루 전체 1440분의 배열을 생성해주엇습니다.
int solution(vector<vector<string>> book_time) {
// 제일 많이 겹치는 부분을 찾으면 될것
//예약시간으 24 *60개인가?
// 1440개의 갯수만 세면되는거 아닌가?
int answer = 0;
int Time[1441];
fill(Time, Time + 1441, 0);
...
그 후 "** : **" 에서 시간과 분을 분리하여
시작시각(분)과 청소를 마친 시각(분) 사이에 포함되는 시간대의 배열에 +1 씩 해주었습니다.
...
for (vector<string> i : book_time) {
string StartTime = i[0];
string EndTime = i[1];
int Startmin = stoi(StartTime.substr(0, 2)) * 60 + stoi(StartTime.substr(3, 2));
int EndMin = stoi(EndTime.substr(0, 2)) * 60 + stoi(EndTime.substr(3, 2)) + 9;
for (int i = Startmin; i <= EndMin; i++) {
Time[i] += 1;
}
}
이렇게 되면 각 배열에 해당하는 분에 호텔에 예약한 사람들의 수를 측정할 수 있습니다.
이제 마지막으로 여기서 최댓값들을 세어주면 끝!
for (int i : Time) {
answer = max(answer, i);
}
return answer;
2단계문제인 만큼 쉽게 풀어낼 수 있었습니다.
틀린점이 있다면 댓 달아주세요!
'코딩테스트!(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
코딩테스트 -- 주사위 고르기 - (프로그래머스 / C++) (0) | 2024.03.12 |
---|---|
코딩테스트 -- 등대 - (프로그래머스 / C++) (0) | 2024.03.06 |
코딩테스트 -- 광물 캐기 - (프로그래머스 / C++) (0) | 2023.05.05 |
코딩테스트 -- 두 원 사이의 정수 쌍- (프로그래머스 / C++) (0) | 2023.05.02 |
코딩테스트 -- 연속된 부분 수열의 합 - (프로그래머스 / C++) (0) | 2023.05.01 |
댓글