1. 개인정보 수집 유효기간

https://school.programmers.co.kr/learn/courses/30/lessons/150370

그냥 단순히 문자열을 변경하는 문제였다.

그냥 일수로 바꿔서 계산해줘도 되는데, compareTo 메소드가 생각이 나서 endDate를 yyyy.mm.dd 형태로 바꾼 후 compareTo로 비교했다

import java.util.*;

class Solution {
    
    HashMap<String,Integer> typeMap = new HashMap<>();
    
    public int[] solution(String today, String[] terms, String[] privacies) {
        
        for(String term:terms){
            String type = term.split(" ")[0];
            int len = Integer.parseInt(term.split(" ")[1]);
            typeMap.put(type,len);
        }
        
        ArrayList<Integer> list = new ArrayList<>();
        
        for(int idx=0;idx<privacies.length;idx++){
            
            String priveDate = privacies[idx].split(" ")[0];
            String type = privacies[idx].split(" ")[1];
            
            String endDate = makeEndDate(priveDate,typeMap.get(type));
            if(today.compareTo(endDate)>0) list.add(idx+1);
        }
        
        int[] answer = new int[list.size()];
        
        for(int idx=0;idx<list.size();idx++){
            answer[idx] = list.get(idx);
        }
  
        return answer;
    }
    
    String makeEndDate(String priveDate, int len){
        
        String[] temp = priveDate.split("\\\\.");
        
        int year = Integer.parseInt(temp[0]);
        int month = Integer.parseInt(temp[1]);
        int day = Integer.parseInt(temp[2]);
       
        year += len/12;
        len%=12;
        month+=len;
        if(day==1){
            day = 28;
            month--;
        }else day--;
        
        if(month%12!=0){
            year += month/12;
            month%=12;
        }else{
            year += month/12-1;
            month = 12;
        }
        StringBuilder sb = new StringBuilder(year+".");
        if(month<10) sb.append("0");
        sb.append(month+".");
        if(day<10) sb.append("0");
        sb.append(day);
        
        return sb.toString();
          
 
    }
    
}

깃허브 —>

https://github.com/honghyunshik/Algorithm/tree/main/프로그래머스/unrated/150370. 개인정보 수집 유효기간

난이도 : ★☆☆☆☆

소요시간 : 20분?

근데 막풀긴했는데 endDate 반환하는 코드가 매우 더러워보인다…

Untitled