출처: https://bumcrush.tistory.com/182 [맑음때때로 겨울]
반응형
package Programmers;

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

public class 개인정보수집유효기간 {
    public static void main(String[] args){
        개인정보수집유효기간 T = new 개인정보수집유효기간();
        String today = "2021.12.08";
        String[] terms = {"A 18"};
        String[] privacies = {"2020.06.08 A"}; //21.12.08
        T.solution(today, terms, privacies);


    }


    public int[] solution(String today, String[] terms, String[] privacies) {
        int[] answer = {};
        HashMap<String, Integer> termsMap = new HashMap<>();
        String[] todayArr = today.split("\\.");
        LocalDate parseToday = LocalDate.of(Integer.parseInt(todayArr[0]), Integer.parseInt(todayArr[1]), Integer.parseInt(todayArr[2]));

        for (String s: terms) {
            String[] tempS = s.split(" ");
            termsMap.put(tempS[0], Integer.parseInt(tempS[1]));
        }

        List<Integer> tempAnswer = new ArrayList<>();

        for (int i = 0; i < privacies.length; i++) {
            String[] privaciesS = privacies[i].split(" ");
            //계약날짜
            String privaciDt = privaciesS[0];
            String[] privaciArr = privaciDt.split("\\.");
            //등급
            String privaciGrade = privaciesS[1];

            LocalDate compareDt = LocalDate.of(Integer.parseInt(privaciArr[0]) , Integer.parseInt(privaciArr[1]) , Integer.parseInt(privaciArr[2])).plusMonths(termsMap.get(privaciGrade));

            int rsInt = parseToday.compareTo(compareDt); // 이전날짜일경우 -1
            if(rsInt >= 0){ // parseToday보다 클경우 파기
                tempAnswer.add(i + 1);
            }
        }
        answer = new int[tempAnswer.size()];
        for (int i = 0; i < tempAnswer.size(); i++) {
            answer[i] = tempAnswer.get(i);
        }

        return answer;
    }
}

 

1. terms 배열 Hashmap 에 넣고 사용

2. privacies 배열 하나씩 돌면서 LoacalDate 사용해서 plusMonths 메서드 사용해서 값 비교한다.

3. CompareDt 가 현재 날짜보다 작으면 파기시킨다. 

 

- LocalDate 에다가 Month 더할때 plusMonth 안쓰고 LocalDate.of(year +, Month + , .... ) 더해서 때려박아서 1-12 까지만 넣어달래서 직접 계산해서 넣어주는 ㅂㅅ 짓을함.

- 직접 날짜 때려박아서 계산하면 테스트케이스 1, 17 실패 반례 찾아서 해결 (년도 월 계산을 ㅂㅅ 같이함) 

- split 할때 "\\." 역슬래쉬 안하면 Dot 파싱이 안됨. 

 

 

쉬운문제가지고 ㅂㅅ짓을 많이함

반응형

+ Recent posts