알고리즘/programmers

[Programmers] 주차 요금 계산

꾸준함. 2022. 3. 6. 23:03

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/92341

 

코딩테스트 연습 - 주차 요금 계산

[180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000]

programmers.co.kr

문제에서 주어진대로 구현하면 되는 문제였습니다.

 

#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <set>
#include <map>
#include <iostream>
using namespace std;
const string MAX_TO = "23:59";
typedef struct
{
string from;
string to;
} Time;
int getDiffMinute(string from, string to)
{
int toHour = stoi(to.substr(0, 2));
int toMinute = stoi(to.substr(3, 2));
int fromHour = stoi(from.substr(0, 2));
int fromMinute = stoi(from.substr(3, 2));
return (toHour - fromHour) * 60 + (toMinute - fromMinute);
}
vector<int> solution(vector<int> fees, vector<string> records) {
map<string, vector<Time>> carRecords;
set<string> carNumbers;
for (string record : records)
{
string temp;
vector<string> v;
for (char c : record)
{
if (c == ' ')
{
v.push_back(temp);
temp = "";
continue;
}
temp += c;
}
carNumbers.insert(v[1]);
if (temp == "IN")
{
carRecords[v[1]].push_back({v[0], ""});
}
else
{
for (int i = 0; i < carRecords[v[1]].size(); i++)
{
if (carRecords[v[1]][i].to == "")
{
carRecords[v[1]][i].to = v[0];
break;
}
}
}
}
vector<int> answer;
for (string carNumber : carNumbers)
{
int diffMinute = 0;
for (Time time : carRecords[carNumber])
{
if (time.to == "")
{
time.to = MAX_TO;
}
diffMinute += getDiffMinute(time.from, time.to);
}
int fee = fees[1] + ceil(max(diffMinute - fees[0], 0) / double(fees[2])) * fees[3];
answer.push_back(fee);
}
return answer;
}
view raw .cpp hosted with ❤ by GitHub

 

개발환경:Visual Studio 2017

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > programmers' 카테고리의 다른 글

[Programmers] 행렬의 곱셈  (0) 2022.03.12
[Programmers] 최솟값 만들기  (0) 2022.03.08
[Programmers] 최댓값과 최솟값  (0) 2022.03.05
[Programmers] 숫자의 표현  (0) 2022.03.05
[Programmers] 땅따먹기  (0) 2022.03.05