PS/programmers

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

팡세영 2023. 1. 18. 23:15


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

 

프로그래머스

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

programmers.co.kr


[문제 풀이]

  • 해당 문제는 간단한 구현 문제인 것 같습니다.
  • (개인정보 수집 일자 + 유효기간) -1  < 현재 날짜이면 배열에 추가 
  • 날짜를 split 함수로 연, 월, 일을 구별해준 뒤 연도에는 336일을 곱해주고 월에는 28일을 곱해줬습니다.
  • 만기일 계산하기 위해 약관 종류를 해쉬맵에 담아 불러왔습니다.

[Java]

 

import java.io.*;
import java.util.*;


class Solution {
    public Object[] solution(String today, String[] terms, String[] privacies) {
        ArrayList<Integer> list = new ArrayList<>();

        String [] todayToken = today.split("\\.");

        // curDay = today
        int curDay = parseYear(todayToken[0]) + parseMonth(todayToken[1]) + parseDay(todayToken[2]);
        HashMap<String, Integer> term = new HashMap<>();

        // init terms
        for(int i=0; i<terms.length; i++){
            String tmp[] = terms[i].split(" ");
            term.put(tmp[0], Integer.parseInt(tmp[1]));
        }

        for(int i=0; i<privacies.length; i++){
            String tokenDate[] = privacies[i].split("\\.| ");
            int targetDay = parseYear(tokenDate[0]) + parseMonth(tokenDate[1])+ parseDay(tokenDate[2]);
            int dueDay = targetDay + (term.get(tokenDate[3]) * 28)-1; // expireDate

            if(curDay > dueDay) list.add(i+1);
        }

        return list.toArray(new Integer[0]);
    }

    public int parseYear(String year){
        return Integer.parseInt(year) * 336;
    }

    public int parseMonth(String month){
        return Integer.parseInt(month) * 28;
    }

    public int parseDay(String day){
        return Integer.parseInt(day);
    }
}


public class Main {


    public static void main(String args[]) throws IOException {

//        new Solution().solution("2022.05.19", new String[]{"A 6", "B 12", "C 3"},
//                new String[]{"2021.05.02 A", "2021.07.01 B", "2022.02.19 C", "2022.02.20 C"});

        new Solution().solution("2020.01.01", new String[]{"Z 3", "D 5"},
                new String[]{"2019.01.01 D", "2019.11.15 Z", "2019.08.02 D", "2019.07.01 D", "2018.12.28 Z"});



    }




}