꾸물꾸물 졔의 개발공부
[프로그래머스] 개인정보 수집 유효기간 - JAVA (2023 KAKAO BLIND RECRUITMENT) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/150370
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문자열을 잘 활용해서 풀 수 있는 문제이다.
substring 메소드를 사용해서 년,월,일 정보를 추출하고
(year*28*12) + (month*28) + day 연산을 통해 정수로 변환하여 비교한다.
약관 종류별 보관기간은 HashMap에 저장하였다.
import java.util.*;
class Solution {
StringTokenizer st;
public int[] solution(String today, String[] terms, String[] privacies) {
List<Integer> ans = new ArrayList<>();
Map<String, Integer> map = new HashMap<>();
for(int i=0; i<terms.length; i++){
st = new StringTokenizer(terms[i], " ");
map.put(st.nextToken(), Integer.parseInt(st.nextToken()));
}
int tyear= Integer.parseInt(today.substring(0,4));
int tmonth = Integer.parseInt(today.substring(5,7));
int tday = Integer.parseInt(today.substring(8,10));
int today_num = (tyear*12*28) + (tmonth*28) + tday;
for(int i=0; i<privacies.length; i++){
st = new StringTokenizer(privacies[i], " ");
String date = st.nextToken();
int time = map.get(st.nextToken()); //유효기간 몇달인지
System.out.println(date);
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(5,7));
int day = Integer.parseInt(date.substring(8,10));
System.out.println(year +" "+ month+" "+day);
int num = (year*12*28) + (month *28) + day ;
num += (time * 28);
System.out.println(today_num +" "+ num);
//오늘 > 유효기간
if(today_num >= num) ans.add(i+1);
}
int[] answer = new int[ans.size()];
for(int i=0; i<answer.length; i++){
answer[i] = ans.get(i);
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이진 변환 반복하기 - JAVA (월간 코드 챌린지 시즌 1 (0) | 2023.09.06 |
---|---|
[프로그래머스] 이모티콘 할인행사 - JAVA (2023 KAKAO BLIND RECRUITMENT) (0) | 2023.09.04 |
[프로그래머스] 등산코스 정하기 - JAVA (2022 KAKAO TECH INTERNSHIP) (0) | 2023.08.22 |
[프로그래머스] 다단계 칫솔 판매 - JAVA (2021 Dev-Matching: 웹 백엔드 개발자(상반기)) (0) | 2023.06.27 |
[프로그래머스] 로또의 최고 순위와 최저 순위 - JAVA (2021 Dev-Matching: 웹 백엔드 개발자(상반기) Lv.1) (0) | 2023.06.19 |