ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/3๋‹จ๊ณ„

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv3] : [1์ฐจ] ์…”ํ‹€๋ฒ„์Šค

Jaeguk 2022. 7. 6. 22:53
๋ฌธ์ œ ๋งํฌ

https://school.programmers.co.kr/learn/courses/30/lessons/17678

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

์…”ํ‹€๋ฒ„์Šค ์šดํ–‰์ •๋ณด๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์ฝ˜์ด ์…”ํ‹€์„ ํƒ€๊ณ  ์‚ฌ๋ฌด์‹ค๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋Šฆ์€ ์ •๋ฅ˜์žฅ ๋„์ฐฉ์‹œ๊ฐ„์„ ๊ตฌํ•˜์—ฌ๋ผ.

 

ํ’€์ด

์ฝ˜์€ ์ด๋ฏธ ๋‹ค๋ฅธ ํฌ๋ฃจ๋“ค์ด ๋ช‡์‹œ์— ์ •๋ฅ˜์žฅ์— ๋„์ฐฉํ•˜๋Š” ์ง€ ์•Œ๊ณ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์…”ํ‹€๋ฒ„์Šค์—๋Š” ์ •๋ฅ˜์žฅ์— ์ผ์ฐ ๋„์ฐฉํ•œ ์‚ฌ๋žŒ๋ถ€ํ„ฐ ํƒ‘์Šนํ•œ๋‹ค.

 

์ฝ˜์€ ์ œ์ผ ๋Šฆ๊ฒŒ ์ •๋ฅ˜์žฅ์— ๋„์ฐฉํ•˜๊ณ  ์‹ถ์–ดํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌด์กฐ๊ฑด ๋ง‰์ฐจ๋ฅผ ํƒ€์•ผํ•œ๋‹ค.

๋งŒ์•ฝ์— ๋„์ฐฉํ•œ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ํฌ๋ฃจ๋“ค์ด ์–ด๋–ค ์…”ํ‹€๋ฒ„์Šค์— ํƒˆ์ง€ ๋ถ„๋ฐฐํ–ˆ์„ ๋•Œ,

1. ๋ง‰์ฐจ๊ฐ€ ๋งŒ์„์ด ์•„๋‹ˆ๋ผ๋ฉด, ์ฝ˜์€ ๋ง‰์ฐจ ์ถœ๋ฐœ์‹œ๊ฐ„์— ๋”ฑ ๋งž์ถฐ ๋„์ฐฉํ•˜๋ฉด ๋œ๋‹ค.

2. ๋ง‰์ฐจ๊ฐ€ ๋งŒ์„์ด๋ผ๋ฉด, ์ฝ˜์€ m๋ฒˆ์งธ ์‚ฌ๋žŒ๋ณด๋‹ค ๋นจ๋ฆฌ ๋„์ฐฉํ•ด์•ผํ•œ๋‹ค.

=> m๋ฒˆ์งธ ์‚ฌ๋žŒ์˜ ์ •๋ฅ˜์žฅ ๋„์ฐฉ์‹œ๊ฐ„๋ณด๋‹ค 1๋ถ„ ๋น ๋ฅด๊ฒŒ ๋„์ฐฉํ•œ๋‹ค.

 

์ฝ”๋“œ ์ž‘์„ฑ
\\
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
string solution(int n, int t, int m, vector<string> timetable) {
    string answer = "";
    vector<int> crew; //ํฌ๋ฃจ๋“ค์˜ ์ค„์„œ๋Š” ์‹œ๊ฐ„
    for(auto Time : timetable){
        int clock = stoi(Time.substr(0,2));
        int minute = stoi(Time.substr(3,2));
        crew.push_back(clock * 100 + minute);
    }
    sort(crew.begin(), crew.end());
    vector<int> Bus; // ๋ฒ„์Šค ์‹œ๊ฐ„ํ‘œ
    int clock = 9;
    int minute = 0;
    for(int i = 0; i<n; i++){
        Bus.push_back(clock * 100 + minute);
        minute += t;
        if(minute >= 60){
            minute %= 60;
            clock ++;
        }
    }
    vector<int> Board[11]; //i๋ฒˆ ๋ฒ„์Šค์— ํƒ‘์Šนํ•  ํฌ๋ฃจ ์ •๋ณด
    for(auto Crew : crew){
        int idx = lower_bound(Bus.begin(), Bus.end(), Crew) - Bus.begin();
        if(Board[idx].size() >= m){
            while(Board[idx].size() >= m && idx < Bus.size() - 1)
                idx++;
        }
        Board[idx].push_back(Crew);
    }
    int N_Bus = Bus.size();
    if(Board[N_Bus - 1].size() < m){
        if(Bus[N_Bus - 1]/ 100 < 10)
            answer += "0";
        answer += to_string(Bus[N_Bus - 1/ 100);
        answer += ":";
        if(Bus[N_Bus - 1] % 100 < 10)
            answer += "0";
        answer += to_string(Bus[N_Bus - 1] % 100);
    }
    else{
        int T = Board[N_Bus - 1][m-1];
        int C = T / 100;
        int M = T % 100;
        M--;
        if(M < 0){
            M = 59;
            C--;
        }
        if(C < 10)
            answer += "0";
        answer += to_string(C);
        answer += ":";
        if(M < 10)
            answer += "0";
        answer += to_string(M);
    }
    return answer;
}
cs
728x90