문제 풀기/C#

71. 개인정보 수집 유효기간

kagan-draca 2025. 2. 21. 15:38

 

기본 틀 :

using System;

public class Solution {
    public int[] solution(string today, string[] terms, string[] privacies) {
        int[] answer = new int[] {};
        return answer;
    }
}

 

생각보다 문제가 까다로웠다...

 

처음에는 계약일로부터 유효기간을 더해서 오늘 날짜와 비교하는 방식으로 

파기할 문서를 구할려고 했다.

 

하지만, 그럴 경우 식이 너무 복잡해지고

 

20XX.XX.28일 에서 3월 더하기 같은 부분에서 오류가 발생했다.

 

 그래서, 아에 관점을 바꿔서 오늘 일수와 종료 일수를 비교하는 방식으로 바꿨다.

 

오늘 일수를 구하는 방법은

 

연 X 12 X 28 + (달 - 1) X 28 + 일

 

로 구할 수 있었다.

 

그 다음,

 

terms를 Dictionary를 이용해 약관 종류에 따른 유효기간의 일수를 구하고

 

privacies를 반복문으로 순회하면서

 

개인정보 수집 일자를 오늘 일수와 마찬가지의 방법으로 일수로 바꾸고

 

Dictionary에 있는 약관 종료에 따른 일수와 더해주었다.

(종료 일수가 된다)

 

마지막으로,

 

오늘 일수와 종료 일수를 비교해서 파기할 문서를 List에 줬다.

 

using System;
using System.Collections.Generic;
using System.Linq;

public class Solution {
    public int[] solution(string today, string[] terms, string[] privacies) {
        int[] todays = today.Split('.').Select(element => int.Parse(element)).ToArray();
        
        // 오늘 일수
        int todayDays = todays[0] * 12 * 28 + (todays[1] - 1) * 28 + todays[2];
        
        Dictionary<string, int> dictTerms = new Dictionary<string, int>();
            
        for(int i = 0; i < terms.Length; i++)
        {
            string[] term = terms[i].Split(' ');
            dictTerms[term[0]] = int.Parse(term[1]) * 28;
        }
        
        List<int> expired = new List<int>();
        
        for(int i = 0; i < privacies.Length; i++)
        {
            string[] privacy = privacies[i].Split(' ');
            int[] starts = privacy[0].Split('.').Select(element => int.Parse(element)).ToArray();
            
            // 계약 시작 일수
            int startDays = starts[0] * 12 * 28 + (starts[1] - 1) * 28 + starts[2];
            
            // 종료 일수
            int endDays = startDays + dictTerms[privacy[1]];
            
            // 종료 일수와 오늘 일수 비교
            if(endDays <= todayDays) expired.Add(i + 1);
        }
        
        return expired.ToArray();
    }
}

 

'문제 풀기 > C#' 카테고리의 다른 글

73. 공원 산책  (0) 2025.02.24
72. 달리기 경주  (0) 2025.02.21
70. 바탕화면 정리  (0) 2025.02.19
69. 성격 유형 검사하기  (0) 2025.02.19
68. 햄버거 만들기 (SequenceEqual)  (0) 2025.02.19