프로그래머스/1레벨
개인정보 수집 유효기간/C++
Koalitsiya
2023. 2. 6. 13:11
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이방법
각 문자열을 잘른 뒤 오늘 날짜와 개인정보 수집 일자 + 약관 종류에 따른 유효기간을 비교해서 후자가 전자보다 작을 시 해당 개인정보는 파기해야하므로 해당 개인정보의 번호를 answer에 담는다.
#include <string>
#include <vector>
#include <map>
#include <sstream>
using namespace std;
vector<int> solution(string today, vector<string> terms, vector<string> privacies) {
vector<int> answer;
vector<int> privDate;
map<char, int> m;
int todayY = stoi(today.substr(0, 4));
int todayM = stoi(today.substr(5, 2));
int todayD = stoi(today.substr(8, 2));
int totalD = todayY * 12 * 28 + (todayM - 1) * 28 + todayD;
for(int i = 0; i < terms.size(); i++)
m[terms[i][0]] = stoi(terms[i].substr(terms[i].find(" "), terms[i].size() - 1));
for(int i = 0; i < privacies.size(); i++) {
int privY = stoi(privacies[i].substr(0, 4));
int privM = stoi(privacies[i].substr(5, 2));
int privD = stoi(privacies[i].substr(8, 2));
char privT = privacies[i].back();
int tmp = privY * 12 * 28 + (privM - 1) * 28 + privD + (m[privT] * 28 - 1);
privDate.push_back(tmp);
}
for(int i = 0; i < privDate.size(); i++)
if(privDate[i] < totalD) answer.push_back(i + 1);
return answer;
}