C++:: 프로그래머스 < 주차 요금 계산 >

jahlee·2023년 5월 21일
0

프로그래머스_Lv.2

목록 보기
48/106
post-thumbnail

주차비용을 계산할 때 분단위 요금이기 때문에 주어지는 사용시간을 분단위로 환산해서 계산하면 편하다. 크게 어렵지는 않지만 시간계산 문제여서 조금 까다로울 수 있다.

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

vector<int> solution(vector<int> fees, vector<string> records)
{
    vector<int> answer;
    map<int, int> used_time, logs;
    for(auto record : records)
    {
        int log_time, car_num;
        log_time = stoi(record.substr(0,2))*60 + stoi(record.substr(3,2));// 분단위로 변환
        car_num = stoi(record.substr(6,4));// 차량 번호
        if (record.substr(11) == "IN") logs[car_num] = log_time;// 출입차량이면
        else
        {// 출차차량이면
            used_time[car_num] += log_time - logs[car_num];// 사용시간 넣어주고
            logs[car_num] = -1; 기존 시간 초기화
        }
    }
    for(auto log : logs) if(log.second >= 0) used_time[log.first] += 23*60 + 59 -log.second;// 출차하지 않은 차량 시간계산
    for(auto c : used_time)
    {
        int cost;
        if (c.second < fees[0]) cost = fees[1];//기본 요금 범위이면
        else cost = fees[1] + (int)ceil((double)(c.second - fees[0])/fees[2])*fees[3];
        answer.push_back(cost);//추가 요금
    }
    return answer;
}

0개의 댓글