주차 요금 계산 92341

PublicMinsu·2023년 1월 18일
0

문제

접근 방법

Map을 활용하여 총 주차 시간, 현재 상태를 저장하고 갱신하면 된다고 생각했다.

코드

#include <string>
#include <vector>
#include <sstream>
#include <map>
using namespace std;

int stringToTime(string number)
{
    string hour = number.substr(0, 2), min = number.substr(3, 2);
    return stoi(hour) * 60 + stoi(min);
}
vector<int> solution(vector<int> fees, vector<string> records)
{
    map<string, int> sum;
    map<string, pair<int, string>> state;
    vector<int> answer;
    for (string record : records)
    {
        stringstream ss(record);
        string time, id, trigger;
        ss >> time >> id >> trigger;
        pair<int, string> cur = {stringToTime(time), trigger};
        if (trigger == "OUT")
        {
            sum[id] += cur.first - state[id].first;
        }
        state[id] = cur;
    }
    for (auto s : state)
    {
        if (s.second.second == "IN")
            sum[s.first] += 1439 - s.second.first;
    }
    for (auto s : sum)
    {
        int time = s.second - fees[0];
        int fee = fees[1];
        if (time > 0)
        {
            fee += time / fees[2] * fees[3];
            if (time % fees[2])
                fee += fees[3];
        }
        answer.push_back(fee);
    }
    return answer;
}

풀이

시간은 60*hour+min인 것을 잘 활용하면 된다.
총 주차 시간을 이용하여 주차 요금을 계산하면 된다.

profile
연락 : publicminsu@naver.com

0개의 댓글