강의로 돌아가기
박관우

뭐가 문제일까요...

아이디어는 먼저 처리 시작점과 처리 끝점을 기록해놓고
시간이 지남에 따라 처리 시작점일 때 처리중인 프로세스 +1
프로세스 처리 끝나고 나서 1초 후에 프로세스 -1
이라는 식으로 코딩했습니다.

샘플테스트에서는 문제 없이 작동하는데
체점테스트 3번과 17번?인가에서 실패가 뜨네요...

작성중인 코드―solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <string>
#include <vector>
#include <iostream>
using namespace std;

int change_number(string pross)
{
    string hou = pross.substr(11,2);
    string min = pross.substr(14,2);
    string sec = pross.substr(17,6);
    sec.erase(sec.begin()+2,sec.begin()+3);
    int hour = stoi(hou)*60*60*1000;
    int mins = stoi(min)*60*1000;
    int secs = stoi(sec);
    return hour + mins + secs;
}

int change_number2(string pross)
{
    string x = pross.substr(24,pross.size()-25);
    double numb = stod(x);
    int numb2 = numb * 1000;
    return numb2 - 1;
}

int solution(vector<string> lines) {
    vector<int> start_point;
    vector<int> end_point;
    int answer = 0;
    for(int i = 0; i< lines.size(); i++)
    {
        string pross = lines[i];
        int end_time = change_number(pross);
        int start_time = end_time - change_number2(pross);
        end_point.push_back(end_time+999);
        start_point.push_back(start_time);
    }
    for (int i = 0; i<end_point.size(); i++)
    {
        cout<<start_point[i]<<endl;
        cout<<end_point[i]<<endl;
    }
    int now = 0;

    while(start_point.size()>0)
    {
        if(end_point[0]<start_point[0])
        {
            now--;
            end_point.erase(end_point.begin(),end_point.begin()+1);
        }
        else
        {
            now++;
            start_point.erase(start_point.begin(),start_point.begin()+1);
        }
        if(answer<now)
        {
            answer = now;
        }
    }

    return answer;
}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.