알고리즘/프로그래머스
2023 카카오 블라인드 코딩테스트 1번 개인정보 수집 유효기간 / C++
내이름은 킹햄찌
2023. 1. 8. 00:20
https://school.programmers.co.kr/learn/courses/30/lessons/150370
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2023 카카오 블라인드 코딩테스트 1번 개인정보 수집 유효기간 문제
아이디어
오늘 날짜, 개인정보 수집일자, 약관에따른 유효기간을 모두 day단위로 convert하여 파기해야할 개인정보의 번호를 반환
하루가 28일이라는 것 주의
#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>
#include <iostream>
using namespace std;
long long convertDay(string s) {
vector<long long> v;
long long num;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '.')
s[i] = ' ';
}
stringstream str(s);
while (str >> num) {
v.push_back(num);
}
return ((v[0] * 336) + (v[1] * 28) + (v[2]));
//365 * 28
}
vector<int> solution(string today, vector<string> terms, vector<string> privacies) {
vector<int> answer;
//convert today
long long Today = convertDay(today);
//convert tems
unordered_map<char, long long> map;
for (auto &term : terms) {
long long num;
char token;
for (stringstream str(term); str >> token >> num;) {
map[token] = (num * 28);
}
}
//convert privacies
int pos = 0;
for (auto &privacie : privacies) {
pos++;
long long temp = convertDay(privacie);
char trm = privacie.back();
temp += map[trm];
if (temp > Today) continue;
answer.push_back(pos);
}
return answer;
}