[프로그래머스] 개인정보 수집 유효기간 자바(Java)
본문 바로가기
알고리즘 풀이

[프로그래머스] 개인정보 수집 유효기간 자바(Java)

by IYK2h 2023. 3. 29.
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

  1. terms에 나온 값을 today 기준으로 값을 빼줍니다.
  2. 1번 값을 map에 term에 나온 약관 종류 별로 저장합니다.
  3. privacies에 나온 값을 기준으로 저장된 map의 값과 비교해 이전이면 파기합니다.

코드

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class Solution {

    public int[] solution(String today, String[] terms, String[] privacies) {

        List<Integer> list = new ArrayList<>();
        Map<String, LocalDate> map = new HashMap<>();

        //terms에 나온 값을 today 기준으로 값을 빼줍니다.
        for (String str : terms) {
            String key = str.split(" ")[0];
            String value = str.split(" ")[1];

            LocalDate date = LocalDate.parse(today, DateTimeFormatter.ofPattern("yyy.MM.dd"));
            date = date.minusMonths(Long.parseLong(value)).plusDays(1);

            //map에 term에 나온 약관 종류 별로 저장합니다.
            map.put(key, date);
        }

        //privacies에 나온 값을 기준으로 저장된 map의 값과 비교해 이전이면 파기합니다.
        for (int i = 0; i < privacies.length; i++) {
            LocalDate date = LocalDate.parse(privacies[i].split(" ")[0],
                    DateTimeFormatter.ofPattern("yyy.MM.dd"));

            String key = privacies[i].split(" ")[1];
            if (map.get(key).isAfter(date)) {
                list.add(i + 1);
            }
        }

        return list.stream().mapToInt(Integer::valueOf).toArray();
    }
}
728x90

댓글