My Blog

[JAVA] 개인정보 수집 유효기간 본문

알고리즘/프로그래머스

[JAVA] 개인정보 수집 유효기간

JAESG 2023. 1. 18. 13:53

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

 

프로그래머스

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

programmers.co.kr

package programmers;

import java.util.ArrayList;

import java.util.Arrays;
import java.util.HashMap;

public class kakao2023_1 {

    static HashMap<String, String> terms_data;

    public int[] solution(String today, String[] terms, String[] privacies) {
        ArrayList<Integer> ans = new ArrayList<>();

        terms_data = new HashMap<>();

        for (int i = 0; i < terms.length; i++) {
            String[] info = terms[i].split(" ");
            terms_data.put(info[0], info[1]);
        }

        int today_year = Integer.parseInt(today.split("\\.")[0]);
        int today_month = Integer.parseInt(today.split("\\.")[1]);
        int today_day = Integer.parseInt(today.split("\\.")[2]);
        int today_cnt = (today_year * 12 * 28) + (today_month * 28) + today_day;

        for (int i = 0; i < privacies.length; i++) {

            String terms_info = String.valueOf(privacies[i].charAt(privacies[i].length() - 1));

            int addMonth = Integer.parseInt(terms_data.get(terms_info));
            
            String[] data_info = privacies[i].split(" ")[0].split("\\.");
            int year = Integer.parseInt(data_info[0]);
            int month = Integer.parseInt(data_info[1]);
            int day = Integer.parseInt(data_info[2]);

            month += addMonth;
            if (month > 12) {
                year = ((month) / 12) + year;
                if (month % 12 == 0) {
                    year -= 1;
                    month = 12;
                } else {
                    month %= 12;
                }
            }
            day -= 1;
            if (day == 0) {
                day = 28;
                month -= 1;
                if (month == 0) {
                    year -= 1;
                    month = 12;
                }
            }
            int passCnt = (year * 12 * 28) + (month * 28) + day;
            if (passCnt < today_cnt) {
                ans.add(i + 1);
            }

        }
        int[] answer = ans.stream()
                .mapToInt(i -> i)
                .toArray();
        System.out.println(Arrays.toString(answer));
        return answer;
    }

    public static void main(String[] args) {
        kakao2023_1 s = new kakao2023_1();
        String today = "2022.05.19";
        String[] terms = {"A 6", "B 12", "C 3"};
        String[] privacies = {"2021.05.02 A", "2021.07.01 B", "2022.02.19 C", "2022.02.20 C"};
        System.out.println(s.solution(today, terms, privacies));
    }

}
728x90

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[JAVA] 두 수의 나눗셈  (0) 2023.02.22
[JAVA] 숫자 비교하기  (0) 2023.02.22
[JAVA] 프로그래머스 - 나머지 구하기  (0) 2023.02.21
[JAVA] n진수 게임  (0) 2023.01.19
[JAVA] 프렌즈4블록  (0) 2023.01.18
Comments