프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
각 분마다 몇 개의 객실이 존재해야하는지 구하는 방식으로 접근했다.
1. room[1450]을 선언하고 0으로 초기화. 청소시간을 고려해서 1440 + 10을 하였다.
2. 각 예약의 대실 시작 시간과 대실 종료 시간 + 청소 시간을 분으로 구함
3. 위의 두 값 사이의 수를 인덱스로 가지는 요소들의 값을 증가
4. room 배열의 최댓값을 리턴
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<string>> book_time) {
int answer = 0, room[1450] = {0, }; //24*60 + 10 = 1450
for(int i = 0; i < book_time.size(); i++) {
//대실 시작 시간을 분으로 전환
int reserveStart = stoi(book_time[i][0].substr(0, 2)) * 60 + stoi(book_time[i][0].substr(3, 2));
//대실 종료 시간 + 청소 시간을 분으로 전환
int reserveEnd = stoi(book_time[i][1].substr(0, 2)) * 60 + stoi(book_time[i][1].substr(3, 2)) + 10;
//대실 시작 시간부터 종료 시간까지 room배열의 값을 증가
for(int time = reserveStart; time < reserveEnd; time++) {
room[time]++;
}
}
//room 배열 안의 가장 큰 값이 필요한 최소 객실 수
for(int num : room)
if(num > answer) answer = num;
return answer;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스/C++] 멀쩡한 사각형 (0) | 2024.03.08 |
---|---|
[프로그래머스/C++] 전력망을 둘로 나누기 (0) | 2024.01.11 |
[프로그래머스/C++] 연속된 부분 수열의 합 (0) | 2024.01.10 |
[프로그래머스/C++] 택배상자 (1) | 2024.01.10 |
[프로그래머스/C++] 두 큐 합 같게 만들기 (0) | 2023.07.11 |