개인정보 수집 유효기간

2025. 1. 22. 10:21·공부/Code Cata

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

 

문자열 형태의 날짜들의 크고 작음을 어떻게 비교할 것인지에 대해 고민이 많았던 것 같다.

그러던 중 날짜를 총 일수로 바꾼다면, 개인정보 수집일자 + 유효기간을 더하기도 쉽고 오늘 날짜와 비교하기도 쉬울 것이라고 생각이 들어 이러한 방식으로 문제를 해결하려 했다.

 

#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>
#include <iostream>

using namespace std;

// 날짜를 총 일수로 변환 메서드
int DateToDays(const string& date) 
{
    int year, month, day;
    char dot1, dot2;
    stringstream ss(date);

    ss >> year >> dot1 >> month >> dot2 >> day;

    return year * 12 * 28 + month * 28 + day;
}

vector<int> solution(string today, vector<string> terms, vector<string> privacies)
{
    unordered_map<string, int> term_map;
    
    // 약관 일수로 변경
    for (const string& term : terms)
    {
        stringstream ss(term);
        string type; int month;
        ss >> type >> month;

        term_map[type] = month * 28;
    }

    // 오늘 날짜 총 일수로 저장
    int today_days = DateToDays(today);
    vector<int> answer;

    // 개인정보 파기 여부 계산
    for (int i = 0; i < privacies.size(); ++i)
    {
        int privacy_days = DateToDays(privacies[i]);

        string date, type;
        stringstream ss(privacies[i]);
        ss >> date >> type;

        privacy_days += term_map[type];
        
        if (today_days >= privacy_days) answer.push_back(i + 1);
    }

    return answer;
}

 

처음에 문자열을 파싱하여 vector에 저장을 해야되나..라고 생각하고 코드를 짜다가 더 효율적인 방법이 없을까 검색해보다, stringstream 클래스에 대해 알게 되었다. 

기존에 익숙하게 사용했던 입,출력 스트림을 문자열에서도 사용할 수 있다는 것을 알게 되었고 이에 대해 추가적으로 공부하며 정리하였다.

 

https://dong-grae.tistory.com/120

 

stringstream

stringstream문자열을 마치 입력 스트림(cin)이나 출력 스트림(cout)처럼 사용할 수 있는 도구이다.문자열 조작이 필요한 작업에서 매우 유용하다.파싱: 문자열을 공백이나 특정 구분자를 기준으로 데

dong-grae.tistory.com

 

이 stringstream을 사용해 날짜 문자열을 매개변수로 전달 받아 총 일수를 계산해 반환하는 메서드를 만들었는데,기존에 구분 문자가 나타났을 때마다 string::substr로 나눠가며 파싱했던 방법보다 훨씬 간편하게 파싱할 수 있었다.

문자열을 파싱하며 문제를 해결해야되는 과정이 조금 더 수월해진 느낌이어서 만족도가 높았다.

'공부 > Code Cata' 카테고리의 다른 글

JadenCase 문자열 만들기  (0) 2025.01.27
최대값과 최솟값  (0) 2025.01.27
햄버거 만들기  (0) 2025.01.20
숫자 짝꿍  (0) 2025.01.13
덧칠하기  (0) 2025.01.08
'공부/Code Cata' 카테고리의 다른 글
  • JadenCase 문자열 만들기
  • 최대값과 최솟값
  • 햄버거 만들기
  • 숫자 짝꿍
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    개인정보 수집 유효기간
    상단으로

    티스토리툴바