*c++ split
vector<string> split(string input, string deli){
long long pos=0;
vector<string> ret;
string token="";
while((pos=input.find(deli))!=string::npos){
token=input.substr(0,pos);
ret.push_back(token);
input.erase(0,pos+deli.size());
}
ret.push_back(input);
return ret;
}
* 시간, 날짜문제는 제일적은단위로 단위를통일하라
//2022, 05, 19 -> 99999일
//test 완료.
long long todayToDay(vector<string> v){
long long ret=0;
ret+=stoi(v[0])*336;
ret+=stoi(v[1])*28;
ret+=stoi(v[2]);
return ret;
}
*함수화하고 cout으로 단위테스트하라.
vector<int> solution(string today, vector<string> terms, vector<string> privacies) {
//today 를 일 로 바꾸기
vector<string> v =split(today,".");
todayDays=todayToDay(v);
//cout<<todayDays;
#include <bits/stdc++.h>
using namespace std;
int today;
map<string,int> m;
vector<int> answer;
long long todayDays;
vector<string> split(string input, string deli){
long long pos=0;
vector<string> ret;
string token="";
while((pos=input.find(deli))!=string::npos){
token=input.substr(0,pos);
ret.push_back(token);
input.erase(0,pos+deli.size());
}
ret.push_back(input);
return ret;
}
//2022, 05, 19 -> 99999일
//test 완료.
long long todayToDay(vector<string> v){
long long ret=0;
ret+=stoi(v[0])*336;
ret+=stoi(v[1])*28;
ret+=stoi(v[2]);
return ret;
}
//test 완
void termsToMap(vector<string> terms){
//vector<string> s=split(terms," ");
for(auto str : terms){
vector<string> v=split(str," ");
m[v[0]]=stoi(v[1])*28;
}
}
void privacyToDayAndCheck(vector<string> privacies){
int idx=1;
for(auto privacy : privacies){
vector<string> v = split(privacy,".");
//2021.05.02 A->2021, 05, [02 A] -> 2021, 05, 02, A==temp[1]
//test완료.
vector<string> temp=split(v[2]," ");
v.pop_back();
v.push_back(temp[0]);
//v.push_back(temp[1]);
//=============test완료========================
/*for(auto i : v){
cout<<i<<endl;
}*/
long long dayss=todayToDay(v);
//cout<<dayss<<endl;
if(abs(dayss-todayDays)>=m[temp[1]]) {
answer.push_back(idx);
}
++idx;
}
}
//cout<<m[]
// 유효기간, 개인정보
//출 : 파기할 개인정보 번호
vector<int> solution(string today, vector<string> terms, vector<string> privacies) {
//today 를 일 로 바꾸기
vector<string> v =split(today,".");
todayDays=todayToDay(v);
//cout<<todayDays;
//map[A]=유효일수 로 저장
termsToMap(terms);
/*cout<<m["A"]<<endl;
cout<<m["B"]<<endl;
cout<<m["C"]<<endl;*/
//privacies를 일로 바꾸기
privacyToDayAndCheck(privacies);
//오늘과 차이 > map[privacy] push idx
/*for(auto i : v) {
cout<<i<<endl;
}*/
//cout<<28*12;
//1년은 336일
//1달은 28일
//cout<<todayToDay(v);
return answer;
}
'Algorithm > programmers' 카테고리의 다른 글
프로그래머스 비밀지도 cpp python// 비트연산 문자열 (0) | 2023.07.11 |
---|---|
프로그래머스 이모티콘할인행사 // 중복순열, vector<pair<int,int>>정렬방법 (0) | 2023.06.28 |
프로그래머스 거리두기체크하기 // 2차원벡터다루기 형식, 종이에그려보며 규칙세우기 , 2차원배열 초기화방법 (0) | 2023.06.24 |
프로그래머스 숫자카드나누기 // 복잡하면 함수로.. , 배열을 정렬하라. (0) | 2023.06.22 |
프로그래머스 여행경로 // 키가 string인 dfs는 for(i)로 해결, 예외처리 백트래킹 (0) | 2023.06.21 |