-
99클럽 코테 스터디 26일차 TIL / 개인정보 수집 유효기간(프로그래머스)Study(진행중)/항해99 2024. 8. 17. 01:08
오늘의 학습 키워드
- 구현
- 해시
- 문자열
공부한 내용 본인의 언어로 정리하기
https://school.programmers.co.kr/learn/courses/30/lessons/150370
구현을 열심히 하면 되는 문제를 풀었다.
풀이 과정은 다음과 같다.
1. 모든 날짜를 "일"로 변환
2. 문자열 열심히 파싱
3. 개인정보 + 유효기간 <= 오늘의 날짜 라면 만료된 개인정보이므로 해당 인덱스를 추가
풀이는 다음과 같다.
import java.util.*; class Solution { final int MONTH_TO_DAY = 28; final int YEAR_TO_DAY = MONTH_TO_DAY * 12; public int[] solution(String today, String[] terms, String[] privacies) { HashMap<String, Integer> termMap = new HashMap<>(); StringTokenizer st; for (String term : terms) { st = new StringTokenizer(term); termMap.put(st.nextToken(), Integer.parseInt(st.nextToken()) * MONTH_TO_DAY); } st = new StringTokenizer(today, "."); int todayInt = dayToInt(st.nextToken(), st.nextToken(), st.nextToken()); ArrayList<Integer> resultList = new ArrayList<>(); int index = 1; for (String privacy : privacies) { st = new StringTokenizer(privacie); String day = st.nextToken(); String termStr = st.nextToken(); st = new StringTokenizer(day, "."); int term = termMap.get(termStr); int compareDayInt = dayToInt(st.nextToken(), st.nextToken(), st.nextToken()) + term; if (compareDayInt <= todayInt) resultList.add(index); index++; } return resultList.stream().mapToInt(Integer::intValue).toArray(); } public int dayToInt(String year, String month, String day) { int result = Integer.parseInt(year) * YEAR_TO_DAY; result += Integer.parseInt(month) * MONTH_TO_DAY; result += Integer.parseInt(day); return result; } }
반응형'Study(진행중) > 항해99' 카테고리의 다른 글
99클럽 코테 스터디 28일차 TIL / TCP & HTTP 차이점 (0) 2024.08.18 99클럽 코테 스터디 27일차 TIL / TCP & UDP 차이 (0) 2024.08.18 99클럽 코테 스터디 25일차 TIL / 순위(프로그래머스) (0) 2024.08.16 99클럽 코테 스터디 24일차 TIL / 가장 먼 노드(프로그래머스) (0) 2024.08.15 99클럽 코테 스터디 23일차 TIL / IPO(Leetcode) (0) 2024.08.14