[프로그래머스(Programmers)][Java,Python] (Lv1) 개인정보 수집 유효기간 (2023 KAKAO BLIND RECRUITMENT)

728x90

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. Java

import java.util.*;
import java.text.SimpleDateFormat;
class Solution {
    public int[] solution(String today, String[] terms, String[] privacies) throws Exception {
        int[] answer = {};
        Map<String, Integer> terms_info = new HashMap<>();
        for ( String term : terms ) {
            String[] t = term.split(" ");
            terms_info.put(t[0], Integer.parseInt(t[1]));
        }
        List<Integer> ans = new ArrayList<>();
        for ( int i = 0; i < privacies.length; ++i ) {
            String[] p = privacies[i].split(" ");
            String dt = p[0];
            String term = p[1];
            SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
            Calendar cal = Calendar.getInstance();
            Date date = format.parse(dt);
            cal.setTime(date);
            cal.add(Calendar.MONTH, terms_info.get(term));
            String due_dt = format.format(cal.getTime());
            if ( today.compareTo(due_dt) >= 0 ) {
                ans.add(i+1);
            }
        }
        answer = new int[ans.size()];
        for ( int i = 0; i < ans.size(); ++i ) {
            answer[i] = ans.get(i);
        }
        return answer;
    }
}

※  Java Class - SimpleDateFormat (https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)

 

2. Python

from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
def solution(today, terms, privacies):
    answer = []
    terms_info = {}
    for term in terms :
        t = term.split(" ")
        terms_info[t[0]] = int(t[1])
    for i in range(len(privacies)) :
        p = privacies[i].split(" ")
        dt = p[0]
        term = p[1]
        date = datetime.strptime(dt, "%Y.%m.%d")
        due_dt = (date + relativedelta(months=terms_info[term])).strftime("%Y.%m.%d")
        if today >= due_dt :
            answer.append(i+1)
    return answer

# 일 더하기 : date + timedelta(days=10)
# 월 더하기 : date + relativedelta(months=10)
# 년 더하기 : date + relativedelta(years=10)

 

반응형