Algorithm/프로그래머스
[Algorithm / Programmers] 2023 KAKAO BLIND RECRUITMENT-개인정보 수집 유효기간
newtownboy
2024. 4. 3. 13:18
[Version]
⦁ 2024.04.03 / [Algorithm / Programmers] 2023 KAKAO BLIND RECRUITMENT-개인정보 수집 유효기간
import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
List<Integer> expiredPrivacies = new ArrayList<>();
String[] todayParts = today.split("\\.");
int currentYear = Integer.parseInt(todayParts[0]);
int currentMonth = Integer.parseInt(todayParts[1]);
int currentDay = Integer.parseInt(todayParts[2]);
Map<String, Integer> termsMap = parseTerms(terms);
for (int i = 0; i < privacies.length; i++) {
String[] privacyParts = privacies[i].split(" ");
String[] dateParts = privacyParts[0].split("\\.");
int year = Integer.parseInt(dateParts[0]);
int month = Integer.parseInt(dateParts[1]);
int day = Integer.parseInt(dateParts[2]);
int term = termsMap.get(privacyParts[1]);
int[] updatedDate = updateDate(year, month, day, term);
year = updatedDate[0];
month = updatedDate[1];
day = updatedDate[2];
if (year < currentYear ||
(year == currentYear && (month < currentMonth || (month == currentMonth && day < currentDay)))) {
expiredPrivacies.add(i + 1);
}
}
return expiredPrivacies.stream().mapToInt(Integer::intValue).toArray();
}
private Map<String, Integer> parseTerms(String[] terms) {
Map<String, Integer> termsMap = new HashMap<>();
for (String term : terms) {
String[] parts = term.split(" ");
termsMap.put(parts[0], Integer.parseInt(parts[1]));
}
return termsMap;
}
private int[] updateDate(int year, int month, int day, int term) {
month += term;
if (month > 12) {
year += (month - 1) / 12;
month = (month - 1) % 12 + 1;
}
if (day == 1) {
month--;
day = 28;
} else {
day--;
}
return new int[]{year, month, day};
}
}