Hueestory

[2022 KAKAO BLIND] - 주차 요금 계산 (C++) 본문

PS(중단)/programmers

[2022 KAKAO BLIND] - 주차 요금 계산 (C++)

히명 2024. 8. 28. 13:37
#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> tmp, cnt;
    
    for (auto s : records){
        int time = stoi(s.substr(0, 2)) * 60 + stoi(s.substr(3, 2));
        int car_num = stoi(s.substr(6, 4));
        if (s.substr(11) == "IN") tmp[car_num] = time;
        else{
            cnt[car_num] += time - tmp[car_num];
            tmp[car_num] = -1;
        }              
    }
    
    for (auto x : tmp){
        if (x.second >= 0)
            cnt[x.first] += 23 * 60 + 59 - x.second;
    }
    
    for (auto y : cnt){
        int cost;
        if (y.second < fees[0])
            cost = fees[1];
        else
            cost = fees[1] + (int)ceil((double)(y.second - fees[0]) / fees[2]) * fees[3];
        answer.push_back(cost);
    }    
    
    return answer;
}

 

1. 시간을 분 단위로 바꾸어 계산하면 편하다

 

2. map<int, int> m1

- 앞은 key, 뒤는 value

- key를 기준으로 오름차순 정렬이 되고 중복 불가능

- m1[key] = value; 로 접근 가능

 

3. string str;

- substr(문자열, 시작위치, 길이)

- str.substr(시작위치, 길이)

 


 

Comments