[Programmers / Level 1] 150370. 개인정보 수집 유효기간 / 2023 KAKAO BLIND RECRUITMENT (Java)

이하얀·2024년 10월 27일
0

🕊️ 프로그래머스

목록 보기
62/82

💡 Info




입출력 조건




입출력 예시




문제 이해


  • 오늘 날짜와 약관의 유효 기간을 고려하여 각 개인정보의 만료 날짜를 계산하고, 만료된 개인정보의 인덱스를 1부터 시작하는 형태로 반환하면 되는 문제


알고리즘


풀이 시간 : 1시간 20분

  1. terms 배열 반복 -> termMap에 저장
  2. today를 .를 기준으로 파싱 -> 정수형으로 연, 월, 일 분리 저장
  3. privacies 배열로 날짜 파싱 -> 월이 12를 넘어가면 연도 증가하기
  4. 만료일 < 오늘날짜 라면 -> answer에 추가(단, 인덱스는 1부터)
import java.util.*;

class Solution {
    public List<Integer> solution(String today, String[] terms, String[] privacies) {
        int mDays = 28;
        int totalToday = getTotalDays(today, mDays);
        List<Integer> answer = new ArrayList<>();
        Map<Character, Integer> termMap = new HashMap<>();

        for (String term : terms) {
            termMap.put(term.charAt(0), Integer.parseInt(term.substring(2)));
        }

        for (int i = 0; i < privacies.length; i++) {
            char pO = privacies[i].charAt(11);
            int totalPrivacy = getTotalDays(privacies[i].substring(0, 10), mDays) +
                               termMap.get(pO) * mDays;
            if (totalPrivacy <= totalToday) {
                answer.add(i + 1);
            }
        }

        return answer;
    }

    private int getTotalDays(String date, int mDays) {
        String[] parts = date.split("\\.");
        return (Integer.parseInt(parts[0]) * mDays * 12) +
               (Integer.parseInt(parts[1]) * mDays) +
               Integer.parseInt(parts[2]);
    }
}


결과


profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글