프로그래머스

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

programmers.co.kr

 

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

 

 

import java.util.*;
import java.time.*;
class Solution {
    
    public LocalDate func(int year, int month, int day, int terms){

        LocalDate days = Year.of(year).atMonth(month).atDay(day);
        
        return days.plusMonths(terms);
    }
    
    public int[] solution(String today, String[] terms, String[] privacies) {
        int[] answer = {};
        HashMap<String, Integer> hm = new HashMap();
        String[] targetday = today.split("\\.");
        
        LocalDate A = func(Integer.parseInt(targetday[0]), Integer.parseInt(targetday[1]), Integer.parseInt(targetday[2]), 0);
        
        for(int i  = 0; i<terms.length; i++){
            String[] tmp = terms[i].split(" ");
            hm.put(tmp[0], Integer.parseInt(tmp[1]));
        }
        
        for(int i = 0; i<privacies.length; i++){
            
            String[] str = privacies[i].split(" ");
            String type = str[1];
            String[] days = str[0].split("\\.");          
            int year = Integer.parseInt(days[0]);
            int month = Integer.parseInt(days[1]);
            int day = Integer.parseInt(days[2]);
            
            LocalDate B = func(year, month, day, hm.get(type));
            System.out.println(A);
            System.out.println(B);
            
            
            if(A.isAfter(B)){
                System.out.println(i+1);
            }
        }
        
        return answer;
    }
}

처음 생각한 방법 : Split을 사용해서 파싱하고, 각 파싱한 변수로 LocalDate 객체를 만들어서 isAfter을 사용해서 문제를 해결하려고함

Split 파싱할 때, " . " dot을 기준으로 하려했는데 그냥 점만 찍으면 안됨..

 

코드를 실행해봤는데 어떤건 맞고 어떤건 틀림, 아마 문제에서 한 달이 28으로 고정이라고 해서 LocalDate를 사용하면 안되나봐요 다시 풀어보자