[JAVA]

[프로그래머스 JAVA] 개인정보 수집 유효기간 풀이

미냠 2023. 11. 8. 23:31
반응형

 

개인정보 수집 유효기간 의 문제를 JAVA로 짜봤다 

 

 

각 사람마다 유효기간이 지났는지를 확인 하는 문제로 이해하면 쉽다. 

 

1. privacies 를 for문으로 반복한다.

2. for문안에 terms를 for문으로 또 반복하며, privacies의 terms 개월 수를 가져온다.

3. privacies의 날짜에서 terms 개월 수를 합한 수가 today와 비교한다.

4. today 보다 작거나 같으면 해당 인덱스를 result에 추가한다. 

 

여기서 날짜 계산의 경우 LocalDate 를 import 하여 활용하였다.

그리고 LocalDate 로 선언하기 전 동일한 format 형태로 맞춰주는 건 필수..! 

 

import java.util.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

class Solution {
    public List<Integer> solution(String today, String[] terms, String[] privacies) {
        List<Integer> answer = new ArrayList<Integer>();
        // 문자열을 LocalDate로 파싱
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");

        for (int i=0; i<privacies.length; i++) {
            String[] privacy = privacies[i].split(" ");
            // 개인정보 수집 일자 
            LocalDate parsedDate = LocalDate.parse(privacy[0], formatter);
            try{                               
                for (int j=0; j<terms.length; j++) {
                    String[] term = terms[j].split(" ");       
                    // 약관 유형의 개월수 가져오기
                    if (privacy[1].equals(term[0])) {
                        // 개인정보 파기 날짜 계산 
                        LocalDate termDate = parsedDate.plusMonths(Integer.parseInt(term[1]));
                        // LocalDate compareTo 날짜 비교 
                        int result = LocalDate.parse(today, formatter).compareTo(termDate);
                        // today가 termDate 보다 작거나 같은 경우 
                        if (result >= 0) {
                            answer.add(i+1);
                        }
                    }
                }
            }catch(Exception e){
                System.out.println(e.getMessage());
            }
        }
        return answer;
    }
}

 

 

그리고 결과는 성공적 ㅎㅎ

반응형