[프로그래머스] 개인정보 수집 유효기간(2023 KAKAO BLIND RECRUITMENT) 자바코드

mango·2023년 6월 24일
0
post-thumbnail

* 자바 코드(1차시도)

import java.util.*;

class Solution {
    public int[] solution(String today, String[] terms, String[] privacies) {
        int[] answer = {};
        int yyyy = 0;
        int mm = 0;
        int dd = 0;
        int answerCursor = 0;
        ArrayList<Integer> arrList = new ArrayList<Integer>();
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        
        for(int i = 0; i < terms.length; i++){
            String[] termsArr = terms[i].split(" ");
            map.put(termsArr[0], Integer.valueOf(termsArr[1]));
        }
        
        for(int i = 0; i < privacies.length; i++){
            String[] privaciesArr = privacies[i].split(" ");
            // System.out.println(privaciesArr[0].substring(5, 7));
            yyyy = Integer.parseInt(privaciesArr[0].substring(0, 4));
            mm = Integer.parseInt(privaciesArr[0].substring(5, 7));
            dd = Integer.parseInt(privaciesArr[0].substring(8, 10));
            
            if(dd == 1) {
                mm--;
                dd = 28;
            }
            else    dd--; 
            
            mm += map.get(privaciesArr[1]);
            if(mm > 12){
                yyyy++;
                mm -= 12;
            }
            // 계산 끝
            String date = yyyy + ".";
            if(mm < 10)
                date += "0" + mm + ".";
            else date += mm + ".";
            
            if(dd < 10)
                date += "0" + dd;
            else date += dd;
            
//             System.out.println(date);
//             System.out.println(today);
            if(date.compareTo(today) < 0){
                arrList.add(i);
            }
            answer = new int[arrList.size()];
            int size = 0;
            for(int j : arrList)
                answer[size++] = j + 1;
        }
        
        return answer;
    }
}

코드가 왤케 길지.. 부끄럽게

* 자바 코드(2차시도)

import java.util.*;

class Solution {
    public int[] solution(String today, String[] terms, String[] privacies) {
        int[] answer = {};
        int yyyy = 0;
        int mm = 0;
        int dd = 0;
        int answerCursor = 0;
        ArrayList<Integer> arrList = new ArrayList<Integer>();
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        
        for(int i = 0; i < terms.length; i++){
            String[] termsArr = terms[i].split(" ");
            map.put(termsArr[0], Integer.valueOf(termsArr[1]));
        }
        
        for(int i = 0; i < privacies.length; i++){
            String[] privaciesArr = privacies[i].split(" ");
            yyyy = Integer.parseInt(privaciesArr[0].substring(0, 4));
            mm = Integer.parseInt(privaciesArr[0].substring(5, 7));
            dd = Integer.parseInt(privaciesArr[0].substring(8, 10));
            
            if(dd == 1) {
                mm--;
                dd = 28;
            }
            else    dd--; 
            
            mm += map.get(privaciesArr[1]);
            while(mm > 12){
                yyyy++;
                mm -= 12;
            }
            // 계산 끝
            
            String date = yyyy + ".";
            if(mm < 10)
                date += "0" + mm + ".";
            else date += mm + ".";
            
            if(dd < 10)
                date += "0" + dd;
            else date += dd;
            
            
            System.out.println(date.compareTo(today));
            if(date.compareTo(today) < 0){
                arrList.add(i);
            }
        }
            answer = new int[arrList.size()];
            int size = 0;
            for(int j : arrList)
                answer[size++] = j + 1;

        return answer;
    }
}

-> month가 12만 넘는게 아니라 24도 넘을 수 있기 때문에 25일때 년도를 2년 올리고 1월로 계산해줘야 하는 부분 수정
-> 테스트케이스로는 이유를 모르겠어서 내가 직접 여러 테스트 케이스 넣어봤다.

profile
앎의 즐거움을 아는 나는 mango ♪

0개의 댓글