카카오 - 개인정보 수집 유효기간

greenTea·2023년 10월 27일
0

코드

import java.util.*;
import java.util.stream.*;

class Solution {
    Map<String,Integer> map;
    public int[] solution(String today, String[] terms, String[] privacies) {
  
        map = new HashMap<>();
        for (String strs : terms) {
            String[] s = strs.split(" ");
            map.put(s[0],Integer.parseInt(s[1]));
        }
        
        List<Integer> answer = new ArrayList<>();
        int cur = time(today);
        
        for (int i=0;i<privacies.length;i++) {
            String[] s = privacies[i].split(" ");
            int check = time(s[0])+map.get(s[1])*28;
            if (cur >= check) {
                answer.add(i+1);
            }
        }
        
        return answer.stream().mapToInt(i -> i).toArray();
    }
    

    private int time(String str) {
        String[] arr = str.split("\\.");
        int year = Integer.parseInt(arr[0].substring(2));
        int month = Integer.parseInt(arr[1])-1;
        int day = Integer.parseInt(arr[2]);
        
        return year*336 + month * 28 + day;
    }
}

풀이

🤔단순한 구현문제입니다.

위으 문제 풀이의 핵심은 time 메소드로 각 값의 유효기간을 구하기 위해 모든 값을 day로 변경하여 풀었습니다.
이 후 today를 변환한 값인 cur 이상인 값들의 경우 list에 넣어주고 배열로 변환하여 반환해주면 됩니다.

😭저의 경우 year * 365를 하는 바람에 오랫동안 문제를 찾지도 못하고 헤맸습니다. 다른 분들은 12 * 28 쓰는 습관을 기르는 것도 좋을 것 같습니다.

출처 : 프로그래머스 - 개인정보 수집 유효기간

profile
greenTea입니다.

0개의 댓글