오늘 날짜를 의미하는 문자열 today, 약관의 유효기간을 담은 1차원 문자열 배열 terms와 수집된 개인정보의 정보를 담은 1차원 문자열 배열 privacies가 매개변수로 주어집니다. 이때 파기해야 할 개인정보의 번호를 오름차순으로 1차원 정수 배열에 담아 return 하도록 solution 함수를 완성해 주세요.
-> 자세한 내용 보러가기
import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
//파기할 약관을 저장할 리스트 -> 추후에 배열로 리턴해야함
List<Integer> list = new ArrayList<>();
//약관의 종류와 유효기간을 저장할 Map 생성 -> 유효기간을 전부 일로 변경해서 저장한다.
Map<String, Integer> map = new HashMap<>();
for(String term : terms){
String[] arr = term.split(" "); //띄어쓰기를 기준으로 구분
//모든 달은 28일까지 있다고 가정 (문제설명)
map.put(arr[0], Integer.parseInt(arr[1]) * 28);
}
//파기해야하는 약관인지 아닌지 확인해야함
//-> privacies의 날짜를 전부 일로 변경 후 더함 + terms의 날짜
//-> today의 날짜를 전부 일로 변경 후 더함
//만약 today보다 크면 파기해야하는 약관으로 추가해야함
for(int idx = 0; idx < privacies.length; idx++){
String[] arr = privacies[idx].split(" ");
String[] days = arr[0].split("\\.");
//약관을 받은 날짜
int pDays = (Integer.parseInt(days[0]) * 12 * 28)
+ (Integer.parseInt(days[1]) * 28)
+ (Integer.parseInt(days[2]))
+ map.get(arr[1]);
//오늘날짜
String[] todays = today.split("\\.");
int tDays = (Integer.parseInt(todays[0]) * 12 * 28)
+ (Integer.parseInt(todays[1]) * 28)
+ (Integer.parseInt(todays[2]));
if(tDays >= pDays) list.add(idx + 1);
}
int[] answer = list.stream().mapToInt(i -> i).toArray();
return answer;
}
}