

-Code
import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
// 타입별 유효 기간 저장
Map<Character, Integer> typeAndMonth = new HashMap<>();
for (int i = 0; i < terms.length; i++) {
StringTokenizer st = new StringTokenizer(terms[i]);
char type = st.nextToken().charAt(0);
int month = Integer.parseInt(st.nextToken());
typeAndMonth.put(type, month);
}
// 유효 기간이 넘지 않은 것 저장
int todayTotalDays = getTotalDays(today);
ArrayList<Integer> answer = new ArrayList<>();
for (int i = 0; i < privacies.length; i++) {
StringTokenizer st = new StringTokenizer(privacies[i]);
String date = st.nextToken();
char type = st.nextToken().charAt(0);
// 검사할 기간에 유효 기간을 더해서 확인
int totalDays = getTotalDays(date) + typeAndMonth.get(type) * 28;
// 현재 날짜보다 검사할 기간이 작으면 추가
if (totalDays <= todayTotalDays) {
answer.add(i + 1);
}
}
return answer.stream().mapToInt(i -> i).toArray();
}
private int getTotalDays(String date) {
// 날짜를 일수로 변경
int[] dateChange = new int[3];
int idx = 0;
for (String el : date.split("\\.")) {
dateChange[idx++] = Integer.parseInt(el);
}
return (dateChange[0] * 12) * 28 + (dateChange[1] - 1) * 28 + dateChange[2];
}
}'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 33257번 상현이의 물리학및실험1 실험 대작전 (0) | 2026.03.27 |
|---|---|
| [프로그래머스/Java] 롤케이크 자르기 (0) | 2026.03.26 |
| [백준/Java] 6069번 Honey and Milk Land (0) | 2026.03.26 |
| [프로그래머스/Java] 택배 상자 꺼내기 (0) | 2026.03.25 |
| [백준/Java] 6069번 Switching Lights (0) | 2026.03.25 |