๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 19537๋ฒˆ - ์‹ธ์ด๋ฒ„๊ฐœ๊ฐ•์ดํšŒ

by ์•ˆ์ฃผํ˜• 2022. 6. 20.

๋ฌธ์ œ

 

19583๋ฒˆ: ์‹ธ์ด๋ฒ„๊ฐœ๊ฐ•์ดํšŒ

์ฒซ๋ฒˆ์งธ ์ค„์—๋Š” ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„ S, ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ๋๋‚ธ ์‹œ๊ฐ„ E, ๊ฐœ๊ฐ•์ดํšŒ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๋๋‚ธ ์‹œ๊ฐ„ Q๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (00:00 ≤ S < E < Q ≤ 23:59) ๊ฐ ์‹œ๊ฐ„์€ HH:MM์˜ ํ˜•์‹์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋‘๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ๋Š”

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <unordered_map>
#include <vector>
#include <sstream>
#include <cstring>

using namespace std;


vector<string> parsing_time(string s){
    istringstream ss(s);
    string stringbuffer;
    vector<string> v;
    while(getline(ss,stringbuffer, ':')){
        v.push_back(stringbuffer);
    }
    return v;
}

vector<string> parsing_blank(string s){
    istringstream ss(s);
    string stringbuffer;
    vector<string> v;
    while(getline(ss,stringbuffer, ' ')){
        v.push_back(stringbuffer);
    }
    return v;
}


int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    string start_time, end_time, streaming_time; cin>>start_time>>end_time>>streaming_time;
    
    int start, end, stream, ans = 0;
    
    vector<string> v = parsing_time(start_time);
    start = stoi(v[0])*60 + stoi(v[1]);
    
    v = parsing_time(end_time);
    end = stoi(v[0])*60 + stoi(v[1]);
    
    v = parsing_time(streaming_time);
    stream = stoi(v[0])*60 + stoi(v[1]);
    
    string s;
    unordered_map<string, pair<bool,bool>> peo_check;
    cin.ignore();
    
    while(getline(cin, s)){
        v = parsing_blank(s);
        vector<string> time = parsing_time(v[0]);
        int hour = stoi(time[0]) * 60;
        int minute = stoi(time[1]);
        if(start>=hour+minute) peo_check[v[1]].first=true;
        else if(end<=hour+minute && stream>=hour+minute) peo_check[v[1]].second=true;
    }
    
    for(auto it = peo_check.begin(); it!=peo_check.end(); it++){
        if(it->second.first && it->second.second) ans++;
    }
    
    cout<<ans;
    
}

ํ’€์ด

์•„๋ž˜ ์กฐ๊ฑด์„ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ž˜ ์ ์–ด์ฃผ๋ฉด ์†์‰ฝ๊ฒŒ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

  1. ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, ํ•™ํšŒ์›์˜ ์ž…์žฅ ํ™•์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค. ํ•™ํšŒ์›์˜ ์ž…์žฅ ์—ฌ๋ถ€๋Š” ๊ฐœ๊ฐ•์ดํšŒ๊ฐ€ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„ ์ด์ „์— ๋Œ€ํ™”๋ฅผ ํ•œ ์ ์ด ์žˆ๋Š” ํ•™ํšŒ์›์˜ ๋‹‰๋„ค์ž„์„ ๋ณด๊ณ  ์ฒดํฌํ•œ๋‹ค. ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ์‹œ์ž‘ํ•˜์ž๋งˆ์ž ์ฑ„ํŒ… ๊ธฐ๋ก์„ ๋‚จ๊ธด ํ•™ํšŒ์›๋„ ์ œ์‹œ๊ฐ„์— ์ž…์žฅ์ด ํ™•์ธ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
  2. ๊ฐœ๊ฐ•์ดํšŒ๋ฅผ ๋๋‚ด๊ณ  ๋‚˜์„œ, ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๋๋‚ผ ๋•Œ๊นŒ์ง€ ํ•™ํšŒ์›์˜ ํ‡ด์žฅ ํ™•์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค. ํ•™ํšŒ์›์˜ ํ‡ด์žฅ ์—ฌ๋ถ€๋Š” ๊ฐœ๊ฐ•์ดํšŒ๊ฐ€ ๋๋‚˜๊ณ  ์ŠคํŠธ๋ฆฌ๋ฐ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€ํ™”๋ฅผ ํ•œ ์ ์ด ์žˆ๋Š” ํ•™ํšŒ์›์˜ ๋‹‰๋„ค์ž„์„ ๋ณด๊ณ  ์ฒดํฌํ•œ๋‹ค. ๊ฐœ๊ฐ•์ดํšŒ๊ฐ€ ๋๋‚˜์ž๋งˆ์ž ์ฑ„ํŒ… ๊ธฐ๋ก์„ ๋‚จ๊ฒผ๊ฑฐ๋‚˜, ๊ฐœ๊ฐ•์ดํšŒ ์ŠคํŠธ๋ฆฌ๋ฐ์ด ๋๋‚˜์ž๋งˆ์ž ์ฑ„ํŒ… ๊ธฐ๋ก์„ ๋‚จ๊ธด ํ•™ํšŒ์›๋„ ์ œ์‹œ๊ฐ„์— ํ‡ด์žฅ์ด ํ™•์ธ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.  

map์˜ key๊ฐ’์„ ์ด๋ฆ„, value ๊ฐ’์„ pair<bool, bool>๋กœ ์ฃผ๊ณ , ์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด๊ณผ ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ true๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ value์˜ pair ๊ฐ’์ด ์ „๋ถ€ true์ธ ๊ฐ’์ด ์ถœ์„์ด ํ™•์ธ๋œ ์ธ์›์ด ๋ฉ๋‹ˆ๋‹ค. 

๋ฌธ์ž parsing์„ stringbufferํ˜•์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๋„์›Œ์“ฐ๊ธฐ์˜ ์œ„์น˜์™€ ์‹œ๊ฐ„์˜ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋‹ˆ substr์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€