개발

[프로그래머스] 개인정보 수집 유효기간 (C++)

yun000 2024. 11. 30. 13:50

문제

https://school.programmers.co.kr/learn/courses/30/lessons/150370

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

풀이

년월일을 모두 일수로 바꿔서 계산했다

한달에 28일까지 있다고 가정했으니

월*28, 년*28*12로 계산했다.

코드

#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;


int changeToDate(string date) 
{
    int y = stoi(date.substr(0, 4));
    int m = stoi(date.substr(5, 2));
    int d = stoi(date.substr(8, 2));
    
    int result=d+m*28+y*28*12;
    
    return result;
}
vector<int> solution(string today, vector<string> terms, vector<string> privacies) 
{
    vector<int> answer;
    
    //save terms
    map<char,int>term;
    for(int i=0;i<terms.size();i++)
    {
        term[terms[i][0]]=stoi(terms[i].substr(2,terms[i].size()-2))*28;
    }
    
    //privacies
    int todayInt=changeToDate(today);
    for(int i=0;i<privacies.size();i++)
    {
        char nowTerm=privacies[i][11];
        int addMonth=term[nowTerm];
        int newDate=changeToDate(privacies[i])+addMonth;
        if(newDate<=todayInt){answer.push_back(i+1);}
    }
   
    //result
    return answer;
}