-
프로그래머스 - 주차 요금 계산 [C++]문제 풀이/프로그래머스 2023. 8. 28. 12:07반응형
이 문제는 구현 문제이다. 문자열을 주어진 delimiter로 split 하는 로직은 반드시 기억해놔야 한다. 입력이 작기 때문에 단순 탐색으로 시간 안에 완료할 수 있고, 문제에 주어진 조건대로 구현하면 정답이 나오는 쉬운 문제이다.
#include <string> #include <vector> #include <iostream> #include <sstream> using namespace std; vector<string> split(string input, char delimit) { stringstream ss(input); string temp; vector<string> result; while (getline(ss, temp, delimit)) { result.push_back(temp); } return result; } int carIn[10000]; int carResult[10000]; vector<int> solution(vector<int> fees, vector<string> records) { vector<int> answer; // init for (int i = 0; i < 10000; i++) { carIn[i] = -1; } for (string& record : records) { vector<string> tempRecord = split(record, ' '); string time = tempRecord[0]; int carNum = stoi(tempRecord[1]); string state = tempRecord[2]; vector<string> tempTime = split(time, ':'); int minute = stoi(tempTime[0]) * 60 + stoi(tempTime[1]); if (state == "IN") { carIn[carNum] = minute; } else { // OUT int in = carIn[carNum]; carIn[carNum] = -1; carResult[carNum] += minute - in; } } int last = 23 * 60 + 59; // rest for (int i = 0; i < 10000; i++) { if (carIn[i] != -1) { carResult[i] += last - carIn[i]; } } // calculation for (int i = 0; i < 10000; i++) { if (carResult[i] != 0) { if (carResult[i] <= fees[0]) { answer.push_back(fees[1]); } else { int result = fees[1]; carResult[i] -= fees[0]; int cnt = carResult[i] / fees[2]; if (carResult[i] % fees[2] != 0) { cnt++; } result += fees[3] * cnt; answer.push_back(result); } } } return answer; }
반응형'문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 거스름돈 [C++] (0) 2023.08.28 프로그래머스 - 연속 펄스 부분 수열의 합 [C++] (2) 2023.08.28 프로그래머스 - [3차] n진수 게임 [C++] (0) 2023.08.28 프로그래머스 - [3차] 압축 [C++] (0) 2023.08.26 프로그래머스 - n^2 배열 자르기 [C++] (0) 2023.08.25