알고리즘 문제풀이/프로그래머스
[프로그래머스/Level 1] 개인정보 수집 유효기간
노력의천재
2023. 4. 10. 20:56
https://school.programmers.co.kr/learn/courses/30/lessons/150370
카카오 기출
오늘 날짜와 각 약관의 유효기간을 일(day) 단위로 변환 후 비교하면 간단하게 해결 가능하다.
주의할 점은 유효기간 변환 후 -1을 해줘야한다.
#include <string>
#include <vector>
#include <sstream>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
map<string, int> m;
vector<int> solution(string today, vector<string> terms, vector<string> privacies) {
vector<int> answer;
int year = stoi(today.substr(0, 4));
int month = stoi(today.substr(5, 2));
int day = stoi(today.substr(8, 2));
int date = year * 12 * 28 + month * 28 + day;
for (auto t : terms) {
stringstream ss(t);
string type;
int period;
ss >> type >> period;
m[type] = period;
}
for (int i = 0; i < privacies.size(); i++) {
string privacy = privacies[i];
stringstream ss(privacy);
string period, type;
ss >> period >> type;
int p_year = stoi(privacy.substr(0, 4));
int p_month = stoi(privacy.substr(5, 2));
int p_day = stoi(privacy.substr(8, 2));
int p_date = p_year * 12 * 28 + (p_month + m[type]) * 28 + p_day - 1;
if (date > p_date) {
answer.push_back(i + 1);
}
}
return answer;
}