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

KDG: First things first!·2024년 8월 9일
0

프로그래머스

목록 보기
8/18

문제 링크

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> answer = new ArrayList<>(); // 정답 담을 리스트
        int order = 0; // privacy 배열의 n번째 원소(1부터 시작)

        StringTokenizer st = new StringTokenizer(today, ".");
        Integer nowYear = Integer.parseInt(st.nextToken()); // 오늘 날짜 연도
        Integer nowMonth = Integer.parseInt(st.nextToken()); // 오늘 날짜 월
        Integer nowDay = Integer.parseInt(st.nextToken()); // // 오늘 날짜 일
        Integer nowDate = (28 * 12 * nowYear) + (28 * nowMonth) + (nowDay); // 오늘 날짜를 총 날짜수로 변환: (YYYY * 28 * 12) + (MM * 12) + DD

        Map<String, Integer> termMap = new HashMap<>(); // key: 등급, value: 유효 기간(MM)

        for (String s : terms) { // termMap에 값 담기
            String[] arr = s.split(" ");
            termMap.put(arr[0], Integer.parseInt(arr[1]));
        }

        for (String privacy : privacies) { //
            order++; // 현재 privacy가 privacies에서 몇 번째 원소인지 count
            String[] array = privacy.split(" ");
            st = new StringTokenizer(array[0], ".");
            Integer fromYear = Integer.parseInt(st.nextToken()); // 수집 날짜 연도
            Integer fromMonth = Integer.parseInt(st.nextToken()); // 수집 날짜 월
            Integer fromDay = Integer.parseInt(st.nextToken()); // 수집 날짜 연도

            String grade = array[1]; // 해당 정보의 약관

            // 수집 날짜를 총 날짜수로 변환
            Integer expiredDate = (fromYear * 28 * 12) + ((fromMonth + termMap.get(grade)) * 28) + fromDay - 1; // 유효기간 전까지만 보관가능하기 때문에 만료일 당일은 제외해야 되기 때문에 -1

            if (nowDate > expiredDate) { // 오늘 총 날짜수가 만료 날짜보다 더 크다면
                answer.add(order); // 폐가해야할 정보로 판단하고 해당 원소가 배열의 몇 번째 원소인지 담는다.
            }

        }
        return answer.stream().mapToInt(i -> i).toArray(); // List인 answer을 반환 타입인 int[]로 변환하여 반환
    }
}
profile
알고리즘, 자료구조 블로그: https://gyun97.github.io/

0개의 댓글