프로그래머스/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;
}