-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_150370.java
More file actions
48 lines (43 loc) · 1.59 KB
/
_150370.java
File metadata and controls
48 lines (43 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
Today = DateValueOf(today);
setTerms(terms);
checkPrivacies(privacies);
return ArrayOf(Answer);
}
static int Today;
static HashMap<Character, Integer> Terms = new HashMap<>();
static List<Integer> Answer = new ArrayList<>();
public static int DateValueOf(String day){
StringTokenizer st = new StringTokenizer(day,".");
int y = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int d = Integer.parseInt(st.nextToken());
return ((y*12)+m)*28+d;
}
public static void setTerms(String[] terms){
for(int i=0; i<terms.length; i++){
StringTokenizer st = new StringTokenizer(terms[i]);
char code = st.nextToken().charAt(0);
int year = Integer.parseInt(st.nextToken());
Terms.put(code,year);
}
}
public static void checkPrivacies(String[] days){
for(int i=0; i<days.length; i++){
StringTokenizer st = new StringTokenizer(days[i]);
int date = DateValueOf(st.nextToken());
int termYear = Terms.get(st.nextToken().charAt(0));
int limit = date + (termYear * 28) - 1;
if(limit < Today) Answer.add(i+1);
}
}
public static int[] ArrayOf(List<Integer> li){
int[] answer = new int[li.size()];
for(int i=0; i<li.size(); i++){
answer[i] = li.get(i);
}
return answer;
}
}