import java.util.*;
class Solution {
public int[] solution(String today, String[] terms, String[] privacies) {
today = today.replace(".",",");
String[] todate = today.split(",");
Map<String,String> map = new HashMap<>();
for(String t : terms)
{
String[] terme = t.split(" ");
map.put(terme[0],terme[1]);
}
Map<Integer,Integer> cntMap = new HashMap<>();
List<Integer> list = new ArrayList<>();
int cnt = 0 ;
for(String p : privacies)
{
cnt++;
p = p.replace(" ",".");
p = p.replace(".",",");
String[] pdate = p.split(",");
int MM = Integer.valueOf(pdate[1]);
int YYYY = Integer.valueOf(pdate[0]);
int addMM = Integer.valueOf(map.get(pdate[3]));
MM = MM + addMM;
if(MM>12)
{
if(MM%12!=0)
{
YYYY = YYYY+MM/12;
MM = MM%12;
}
else{
YYYY = (YYYY+MM/12) - 1;
MM = 12;
}
}
if(Integer.valueOf(todate[0])>YYYY)
{
list.add(cnt);
}
else if(Integer.valueOf(todate[0])==YYYY)
{
if(Integer.valueOf(todate[1])>MM)
{
list.add(cnt);
}
else if(Integer.valueOf(todate[1])==MM)
{
if(Integer.valueOf(todate[2])>=Integer.valueOf(pdate[2]))
{
list.add(cnt);
}
}
}
}
int[] answer = new int[list.size()];
for(int i = 0 ; i<answer.length ; i ++)
{
answer[i] = list.get(i);
}
return answer;
}
}
2023 KAKAO BLIND RECRUITMENT 개인정보 수집 유효기간 문제
풀면서 문제가 재밌다는 생각도 들었고, 실제로 이런부분이 쓰이겠다 라는 생각이 들어서 더 풀어보고 싶었던 문제였다.
다만 나는 Oracle에서 SQL로 주로 썼을 부분이라 뭔가, Java로 풀어서 제한사항등을 고려하는게 더 재밌었다.
Date형식으로도 풀어낼 수 있을 것 같았으나 아예 split으로 끊어서 숫자로 처리해버리는게 더 일목요연할 것 같아서
생각보다 손 쉽게 풀었다. 아 사례 17번에서 안넘어갔었는데 혹시나 해서 간과한 부분을 고치니 바로 PASS!
코딩테스트 풀면서 느낀게 사람들의 정답률과 상관없이 쫄지말고 덤벼봐야겠단 생각이 든다. 나도 허접떼기는 아님!ㅋ흫ㅎㅋㅇ헹ㅎ힣ㅎ
'ProgrammersCodingTest' 카테고리의 다른 글
프로그래머스_완주하지 못한 선수 (0) | 2023.04.17 |
---|---|
프로그래머스_옹알이 (0) | 2023.04.17 |
코딩테스트_분수의덧셈 (0) | 2023.04.17 |