import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
int[] answer = {};
int yyyy = 0;
int mm = 0;
int dd = 0;
int answerCursor = 0;
ArrayList<Integer> arrList = new ArrayList<Integer>();
HashMap<String, Integer> map = new HashMap<String, Integer>();
for(int i = 0; i < terms.length; i++){
String[] termsArr = terms[i].split(" ");
map.put(termsArr[0], Integer.valueOf(termsArr[1]));
}
for(int i = 0; i < privacies.length; i++){
String[] privaciesArr = privacies[i].split(" ");
// System.out.println(privaciesArr[0].substring(5, 7));
yyyy = Integer.parseInt(privaciesArr[0].substring(0, 4));
mm = Integer.parseInt(privaciesArr[0].substring(5, 7));
dd = Integer.parseInt(privaciesArr[0].substring(8, 10));
if(dd == 1) {
mm--;
dd = 28;
}
else dd--;
mm += map.get(privaciesArr[1]);
if(mm > 12){
yyyy++;
mm -= 12;
}
// 계산 끝
String date = yyyy + ".";
if(mm < 10)
date += "0" + mm + ".";
else date += mm + ".";
if(dd < 10)
date += "0" + dd;
else date += dd;
// System.out.println(date);
// System.out.println(today);
if(date.compareTo(today) < 0){
arrList.add(i);
}
answer = new int[arrList.size()];
int size = 0;
for(int j : arrList)
answer[size++] = j + 1;
}
return answer;
}
}
코드가 왤케 길지.. 부끄럽게
import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
int[] answer = {};
int yyyy = 0;
int mm = 0;
int dd = 0;
int answerCursor = 0;
ArrayList<Integer> arrList = new ArrayList<Integer>();
HashMap<String, Integer> map = new HashMap<String, Integer>();
for(int i = 0; i < terms.length; i++){
String[] termsArr = terms[i].split(" ");
map.put(termsArr[0], Integer.valueOf(termsArr[1]));
}
for(int i = 0; i < privacies.length; i++){
String[] privaciesArr = privacies[i].split(" ");
yyyy = Integer.parseInt(privaciesArr[0].substring(0, 4));
mm = Integer.parseInt(privaciesArr[0].substring(5, 7));
dd = Integer.parseInt(privaciesArr[0].substring(8, 10));
if(dd == 1) {
mm--;
dd = 28;
}
else dd--;
mm += map.get(privaciesArr[1]);
while(mm > 12){
yyyy++;
mm -= 12;
}
// 계산 끝
String date = yyyy + ".";
if(mm < 10)
date += "0" + mm + ".";
else date += mm + ".";
if(dd < 10)
date += "0" + dd;
else date += dd;
System.out.println(date.compareTo(today));
if(date.compareTo(today) < 0){
arrList.add(i);
}
}
answer = new int[arrList.size()];
int size = 0;
for(int j : arrList)
answer[size++] = j + 1;
return answer;
}
}
-> month가 12만 넘는게 아니라 24도 넘을 수 있기 때문에 25일때 년도를 2년 올리고 1월로 계산해줘야 하는 부분 수정
-> 테스트케이스로는 이유를 모르겠어서 내가 직접 여러 테스트 케이스 넣어봤다.