Hello Ocean! ๐ŸŒผ

[C++/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ถ”์„ ํŠธ๋ž˜ํ”ฝ ๋ณธ๋ฌธ

Algorithm

[C++/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ถ”์„ ํŠธ๋ž˜ํ”ฝ

bba_dda 2021. 11. 17. 20:00
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

https://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-1

programmers.co.kr

ํ’€์ด

lines ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ N์ผ ๋•Œ

lines ๋ฐฐ์—ด์„ N๋ฒˆ ๋Œ๋ฉด์„œ 

2016-09-15 03:10:33.020 0.011s  ์™€ ๊ฐ™์€ ๋กœ๊ทธ ๋ฌธ์ž์—ด์„ ์‹œ๊ฐ„, ๋ถ„, ์ดˆ, ms, ์ฒ˜๋ฆฌ์‹œ๊ฐ„์œผ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค.

 

๋ถ„๋ฆฌํ•œ ํ›„์— ์ฒ˜๋ฆฌ ์ข…๋ฃŒ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ ์‹œ์ž‘์‹œ๊ฐ„์„ ms๋‹จ์œ„๋กœ ๊ฐ๊ฐ ends, starts์— ์ €์žฅํ•œ๋‹ค. 

์ฒ˜๋ฆฌ ์ข…๋ฃŒ์‹œ๊ฐ„์€ ์‹œ๊ฐ„, ๋ถ„, ์ดˆ, ms๋ฅผ ์ด์šฉํ•ด ๋‹จ์œ„๋ฅผ ๋ณ€ํ™˜ํ•˜๋ฉด ๋˜๊ณ ,

์ฒ˜๋ฆฌ ์‹œ์ž‘์‹œ๊ฐ„์€ ์ฒ˜๋ฆฌ ์ข…๋ฃŒ์‹œ๊ฐ„ - ์ฒ˜๋ฆฌ์‹œ๊ฐ„ + 1 ์ด๋‹ค. '

 

๊ทธ ํ›„์— N๋ฒˆ ๋Œ๋ฉด์„œ, 

๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์ฒ˜๋ฆฌ ์ข…๋ฃŒ์‹œ๊ฐ„ + 1์ดˆ ์ด๋‚ด์— ์‹œ์ž‘ํ•œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜(count)๋ฅผ ์ฐพ๋Š”๋‹ค. 

๊ทธ๋ž˜์„œ ์ตœ์ข…์ ์œผ๋กœ count์˜ ์ตœ๋Œ“๊ฐ’์„ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

 

์‹œ๊ฐ„์„ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์ค„์ด๊ธฐ ์œ„ํ•ด, 

ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค ๋’ค์— ๋‚จ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ์‹œ์ ์˜ count ์ตœ๋Œ“๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ๋ฐ”๋กœ ์ข…๋ฃŒ๋˜๊ฒŒ ํ–ˆ๋‹ค.

(๋Œ๋ ค๋ดค์ž ํ˜„์žฌ ์ตœ๋Œ“๊ฐ’๋ณด๋‹ค ์ปค์งˆ ์ผ์ด ์—†์œผ๋ฏ€๋กœ)

 

๋ง๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์ดํ•ด๊ฐ€ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™๋‹ค. 

์ฝ”๋“œ

#include <string>
#include <vector>

using namespace std;

int makeMs(string h, string m, string s, string ms) {
    return stoi(h)*3600*1000 
        + stoi(m)*60*1000
        + stoi(s)*1000
        + stoi(ms);
}
int solution(vector<string> lines) {
    vector<int> starts; vector<int> ends;
    
    for (int i=0;i<lines.size();i++){
        string hour = lines[i].substr(11, 2);
        string minute = lines[i].substr(14, 2);
        string second = lines[i].substr(17, 2);
        string ms = lines[i].substr(20, 3);
        string processT = lines[i].substr(24);
        processT.pop_back();
        int processTMs = stof(processT)*1000;
        int endT = makeMs(hour, minute, second, ms);
        int startT = endT - processTMs + 1;
        
        starts.push_back(startT); ends.push_back(endT);
    }
    
    // ๊ฐ ํ”„๋กœ์„ธ์Šค๋ณ„๋กœ ์ข…๋ฃŒ์‹œ๊ฐ„+1์ดˆ ์ด๋‚ด์— ๋ช‡๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฒน์น˜๋Š”์ง€ ๊ณ„์‚ฐ 
    // ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ 
    int answer = 0;
    for (int i=0;i<lines.size();i++){
        int count = 1;
        if (answer >= lines.size()-i) break;
        for (int j=i+1;j<lines.size();j++) {
            if (starts[j] < ends[i]+1000) count++;
        }
        if (answer<count) answer=count;
    }
    return answer;
}

๊ฒฐ๊ณผ

๋ฐ˜์‘ํ˜•