import java.util.*;
import java.util.stream.*;
class Solution {
Map<String,Integer> map;
public int[] solution(String today, String[] terms, String[] privacies) {
map = new HashMap<>();
for (String strs : terms) {
String[] s = strs.split(" ");
map.put(s[0],Integer.parseInt(s[1]));
}
List<Integer> answer = new ArrayList<>();
int cur = time(today);
for (int i=0;i<privacies.length;i++) {
String[] s = privacies[i].split(" ");
int check = time(s[0])+map.get(s[1])*28;
if (cur >= check) {
answer.add(i+1);
}
}
return answer.stream().mapToInt(i -> i).toArray();
}
private int time(String str) {
String[] arr = str.split("\\.");
int year = Integer.parseInt(arr[0].substring(2));
int month = Integer.parseInt(arr[1])-1;
int day = Integer.parseInt(arr[2]);
return year*336 + month * 28 + day;
}
}
🤔단순한 구현문제입니다.
위으 문제 풀이의 핵심은 time 메소드로 각 값의 유효기간을 구하기 위해 모든 값을 day로 변경하여 풀었습니다.
이 후 today를 변환한 값인 cur 이상인 값들의 경우 list에 넣어주고 배열로 변환하여 반환해주면 됩니다.
😭저의 경우 year * 365를 하는 바람에 오랫동안 문제를 찾지도 못하고 헤맸습니다. 다른 분들은 12 * 28 쓰는 습관을 기르는 것도 좋을 것 같습니다.