티스토리 뷰
문제 설명
이번 추석에도 시스템 장애가 없는 명절을 보내고 싶은 어피치는 서버를 증설해야 할지 고민이다. 장애 대비용 서버 증설 여부를 결정하기 위해 작년 추석 기간인 9월 15일 로그 데이터를 분석한 후 초당 최대 처리량을 계산해보기로 했다. 초당 최대 처리량은 요청의 응답 완료 여부에 관계없이 임의 시간부터 1초(=1,000밀리 초) 간 처리하는 요청의 최대 개수를 의미한다.
입력 형식
- solution 함수에 전달되는 lines 배열은 N(1 ≦ N ≦ 2,000)개의 로그 문자열로 되어 있으며, 각 로그 문자열마다 요청에 대한 응답 완료 시간S와 처리시간 T가 공백으로 구분되어 있다.
- 응답 완료 시간S는 작년 추석인 2016년 9월 15일만 포함하여 고정 길이 2016-09-15 hh:mm:ss.sss 형식으로 되어 있다.
- 처리시간 T는 0.1s, 0.312s, 2s 와 같이 최대 소수점 셋째 자리까지 기록하며 뒤에는 초 단위를 의미하는 s로 끝난다.
- 예를 들어, 로그 문자열 2016-09-15 03:10:33.020 0.011s은 2016년 9월 15일 오전 3시 10분 **33.010초**부터 2016년 9월 15일 오전 3시 10분 **33.020초**까지 **0.011초** 동안 처리된 요청을 의미한다. (처리시간은 시작시간과 끝시간을 포함)
- 서버에는 타임아웃이 3초로 적용되어 있기 때문에 처리시간은 0.001 ≦ T ≦ 3.000이다.
- lines 배열은 응답 완료 시간S를 기준으로 오름차순 정렬되어 있다.
출력 형식
- solution 함수에서는 로그 데이터 lines 배열에 대해 초당 최대 처리량을 리턴한다.
입출력 예
입력 | 출력 |
"2016-09-15 01:00:04.001 2.0s", "2016-09-15 01:00:07.000 2s" |
1 |
"2016-09-15 01:00:04.002 2.0s", "2016-09-15 01:00:07.000 2s" |
2 |
"2016-09-15 20:59:57.421 0.351s", "2016-09-15 20:59:58.233 1.181s", "2016-09-15 20:59:58.299 0.8s", "2016-09-15 20:59:58.688 1.041s", "2016-09-15 20:59:59.591 1.412s", "2016-09-15 21:00:00.464 1.466s", "2016-09-15 21:00:00.741 1.581s", "2016-09-15 21:00:00.748 2.31s", "2016-09-15 21:00:00.966 0.381s", "2016-09-15 21:00:02.066 2.62s" |
7 |
코드
#include <string>
#include <vector>
using namespace std;
pair<int, int> get_time(string s)
{
int start, end = 0;
int process;
end += stoi(s.substr(11, 2)) * 3600 * 1000 ;
end += stoi(s.substr(14, 2)) * 60 * 1000;
end += stoi(s.substr(17, 2)) * 1000;
end += stoi(s.substr(20, 3));
process = stof(s.substr(24, 5)) * 1000;
start = end - process + 1;
return make_pair(start, end);
}
int solution(vector<string> lines) {
int answer = 0;
vector<pair<int, int>> time;
int i, j, cnt, limit;
for (i = 0; i < lines.size(); i++)
{
time.push_back(get_time(lines[i]));
}
for (i = 0; i < lines.size(); i++)
{
cnt = 0;
limit = time[i].second + 1000;
for (j = i; j < lines.size(); j++)
{
if (time[j].first < limit)
cnt++;
}
answer = max(answer, cnt);
}
return answer;
}
링크
programmers.co.kr/learn/courses/30/lessons/17676
코딩테스트 연습 - [1차] 추석 트래픽
입력: [ 2016-09-15 20:59:57.421 0.351s, 2016-09-15 20:59:58.233 1.181s, 2016-09-15 20:59:58.299 0.8s, 2016-09-15 20:59:58.688 1.041s, 2016-09-15 20:59:59.591 1.412s, 2016-09-15 21:00:00.464 1.466s, 2016-09-15 21:00:00.741 1.581s, 2016-09-15 21:00:00.748
programmers.co.kr
github.com/inbdni/Programmers/blob/master/level03/%EC%B6%94%EC%84%9D%ED%8A%B8%EB%9E%98%ED%94%BD.cpp
inbdni/Programmers
Contribute to inbdni/Programmers development by creating an account on GitHub.
github.com
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스] 풍선 터트리기 / C++ (0) | 2021.02.04 |
---|---|
[프로그래머스] 2 X N 타일링 / C++ (0) | 2021.02.03 |
[프로그래머스] N으로 표현 / C++ (0) | 2021.02.01 |
[프로그래머스] 등굣길 / C++ (0) | 2021.01.30 |
[프로그래머스] 정수 삼각형 / C++ (0) | 2021.01.29 |