알고리즘
[프로그래머스 카카오 2023기출문제] 개인정보 수집 유효기간
begong
2024. 3. 27. 15:51
반응형
자바의 여러기능을 잘 아는지 테스트하는 문제였다.
parsing하는것이 주요 관건
import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
int count = 0;
boolean[] check = new boolean[privacies.length];
HashMap<String,Integer> map = new HashMap<>();
StringTokenizer st;
for(String s : terms){
st = new StringTokenizer(s);
String key = st.nextToken();
int value = Integer.parseInt(st.nextToken());
map.put(key,value);
}
st = new StringTokenizer(today,".");
int todayYear = Integer.parseInt(st.nextToken());
int todayMonth = Integer.parseInt(st.nextToken());
int todayDate = Integer.parseInt(st.nextToken());
int idx = 0;
for(String s : privacies){
st = new StringTokenizer(s);
String dateString = st.nextToken();
String term = st.nextToken();
int termMonth = map.get(term);
st = new StringTokenizer(dateString,".");
int year = Integer.parseInt(st.nextToken());
int month = Integer.parseInt(st.nextToken());
int date = Integer.parseInt(st.nextToken());
month += termMonth;
date -=1;
if(month>12){
year += month / 12;
month = month %12;
}
if(date <1){
date = 28;
month-=1;
}
if(month <1){
year-=1;
month=12;
}
if(todayYear>year){
count += 1;
check[idx] = true;
}else if(todayYear==year && todayMonth>month){
count += 1;
check[idx] = true;
}else if(todayYear==year && todayMonth==month &&todayDate>date){
count += 1;
check[idx] = true;
}
idx++;
}
int[] answer = new int[count];
idx=0;
for(int i = 0; i<privacies.length;i++){
if(check[i]){
answer[idx] = i+1;
idx++;
}
}
return answer;
}
}
반응형