- 회고
71. 개인정보 수집 유효 기간 : https://school.programmers.co.kr/learn/courses/30/lessons/150370
- 풀이 과정
import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
List<Integer> ansLi = new ArrayList<>();
Map<String, Integer> termsMap = new HashMap<>();
for (String t : terms) {
String[] tArr = t.split(" ");
termsMap.put(tArr[0], Integer.parseInt(tArr[1]));
}
String[] todayArr = today.split("\\.");
int todays = (Integer.parseInt(todayArr[0]) - 2000) * 12 * 28
+ Integer.parseInt(todayArr[1]) * 28
+ Integer.parseInt(todayArr[2]);
int idx = 1;
for (String p : privacies) {
String k = String.valueOf(p.charAt(p.length() - 1));
int exp = termsMap.get(k) * 28;
p = p.substring(2, p.length() - 2);
String[] pArr = p.split("\\.");
exp += Integer.parseInt(pArr[0]) * 12 * 28
+ Integer.parseInt(pArr[1]) * 28
+ Integer.parseInt(pArr[2]);
if(todays >= exp){
ansLi.add(idx);
}
idx++;
}
int[] answer = new int[ansLi.size()];
for(int i = 0; i < ansLi.size(); i++){
answer[i] = ansLi.get(i);
}
return answer;
}
}
- 등급별 만료 기간에 대한 맵을 정의하여 대입
- 조건이 2000~2022년까지니 2000년을 빼고 날짜 계산
- 오늘 날짜를 .split를 통해 계산
- 각 고객의 날짜와 정보를 계산
- 고객의 날짜 + 만료등급이 오늘 날짜보다 작으면 정답배열에 추가
- 진행
일자 | 완료 번호 |
24.07.16 ~ 24.07.31 | 1~63 |
24.08.01 | 64 |
24.08.02 | 65 |
24.08.05 | 66 |
24.08.06 | 67 |
24.08.07 | 68 |
24.08.08 | 69 |
24.08.09 | 70 |
24.08.12 | 71 |
'Java & Spring > 코딩테스트' 카테고리의 다른 글
23일차 - 알고리즘 코드카타 (0) | 2024.08.14 |
---|---|
22일차 - 알고리즘 코드카타 (0) | 2024.08.13 |
20일차 - 알고리즘 코드카타 (0) | 2024.08.09 |
19일차 - 알고리즘 코드카타 (0) | 2024.08.08 |
18일차 - 알고리즘 코드카타 (0) | 2024.08.07 |