[Programmers] 주차 요금 계산(Lv.2)

Alice·2023년 7월 17일
0

풀이 소요시간 : 60분 초과(실패)

문제가 길어서 대충 읽다가 낭패를 본 케이스다. 결국 제 힘으로 풀기는 했고 그리 어려운 구현은 아니였다. 말 그대로 문제만 잘 읽으면 되는 문제다. 문제를 정말 꼼꼼히 읽도록 해야겠다.

최종 주차 시간을 모두 정산한 뒤, 최종 주차 요금을 정산하면 끝나는 문제다.
나는 입출력 예시를 제대로 읽지 않고 정산을 마치지 않고 왔다갔다 하며 요금을 계산하다가 시간을 낭비하고 말았다.


전체 코드

#include <string>
#include <vector>
#include <cmath>
#include <map>

using namespace std;
map<int, int> Total; //총 주차시간
map<int, int> Map;

vector<int> solution(vector<int> fees, vector<string> records) {
    
    
    //주차 시간 계산
    for(string str : records) 
    {
        int Time = 60 * stoi(str.substr(0, 2)) + stoi(str.substr(3, 2));       
        int Number = stoi(str.substr(6, 4));
        string InOut = str.substr(11);
        //기본 정보
        
        if(InOut == "IN")
        {
            Map[Number] = Time;
        }
        else if(InOut == "OUT")
        {
            int Gap = Time - Map[Number];
            //차량 주차 시간
            Total[Number] += Gap;
            Map[Number] = -1;
            //출차 처리
        }
        
    }

    // 주차 시간 정산
    for(auto E : Map)
    {
        if(E.second >= 0)
        {
            int Gap = (23 * 60) + 59 - E.second;
            Total[E.first] += Gap;
            E.second = -1;
        }
    }
    
    
    // 주차요금 계산
    
    vector<int> Vector;
    
    for(auto E : Total)
    {
        int Sum = 0;
        
        if(E.second <= fees[0])
        {
            Sum += fees[1];
        }
        else
        {
            Sum += fees[1];
            E.second -= fees[0];
            
            int Unit = E.second / fees[2];
            if(E.second % fees[2] > 0) Unit++;
            //단위 수 
            
            Sum += (Unit * fees[3]);
        }
        
        Vector.push_back(Sum);
    }    
    
    

    
    return Vector;
    
}
profile
SSAFY 11th

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기