Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스파르타내일배움캠프WIL
- Python
- 스파르타내일배움캠프
- 내일배움캠프
- 운영체제
- 개발자블로그
- MySQL
- Spring
- 부트캠프
- 백준
- 프로그래머스
- AWS
- 99일지
- 소프트웨어
- wil
- 항해
- Flutter
- 스파르타내일배움캠프TIL
- 코딩테스트
- 컴퓨터개론
- 스파르타코딩클럽
- java
- 개인공부
- 국비
- 99클럽
- 컴퓨터구조론 5판
- 자바
- til
- 중심사회
- 개발자스터디
Archives
- Today
- Total
컴공생의 발자취
프로그래머스(개인정보 수집 유효기간) 본문
728x90
반응형
💡 오늘의 학습 키워드
- 프로그래머스
* 개인정보 수집 유효기간 : 미들러 문제(Level 2)
오늘의 회고
문제1 : [개인정보 수집 유효기간]
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
오늘의 날짜와 개인정보 수집 날짜 그리고 유효기간(월)을 알려주었을 때 폐기해야 하는 개인정보 번호를 리턴해주는 문제였다.
우선, split해야 하는 문제가 너무 많아서 당황했다.
이걸 어떻게 풀지? 어떻게 나누지? 라고 생각했지만..
그래도 일단 공백, "\\."을 기준으로 문자열을 나누었다.
- 오늘의 년,월,일
- 유효기간 타입, 기간
- 개인정보들의 수집날짜, 유효기간 타입
이렇게 데이터를 정리해줬다.
반복문을 돌며
- 개인정보들의 수집날짜를 년,월,일로 다시 나누어주고
- 개인정보 유효 마감일을 구하고
- 오늘의 날짜가 개인정보 유효 마감일보다 뒤라면 폐기할 정보로 넣어줬다.
그러고 배열 크기 맞추려고..
무식하게 반복문을 사용했다.
- 어떻게 해결했는지
import java.util.*;
class Solution {
public String[][] arrSplit(String[] arr) {
int size = arr.length;
String[][] arrSplit = new String[size][2];
for (int i = 0; i < size; i++) {
arrSplit[i] = arr[i].split(" ");
}
return arrSplit;
}
public String[] findDeadline(String[] day, String[][] termsArr, int termSize) {
int month = 0;
String[] tempDay = day[0].split("\\.");
for (int i = 0; i < termSize; i++) {
if (day[1].equals(termsArr[i][0])){
month = Integer.parseInt(termsArr[i][1]);
}
}
tempDay[1] = Integer.toString(Integer.parseInt(tempDay[1]) + month);
while (Integer.parseInt(tempDay[1]) > 12) {
tempDay[0] = Integer.toString(Integer.parseInt(tempDay[0]) + 1);
tempDay[1] = Integer.toString(Integer.parseInt(tempDay[1]) - 12);
}
return tempDay;
}
public boolean checkDeadline(String[] today, String[] deadline) {
if (Integer.parseInt(today[0]) > Integer.parseInt(deadline[0]))
return true;
else if (Integer.parseInt(today[0]) == Integer.parseInt(deadline[0])
&& Integer.parseInt(today[1]) > Integer.parseInt(deadline[1]))
return true;
else if (Integer.parseInt(today[0]) == Integer.parseInt(deadline[0])
&& Integer.parseInt(today[1]) == Integer.parseInt(deadline[1])
&& Integer.parseInt(today[2]) >= Integer.parseInt(deadline[2]))
return true;
return false;
}
public int[] solution(String today, String[] terms, String[] privacies) {
int privSize = privacies.length;
int termSize = terms.length;
int[] temp = new int[privSize];
String[] todayArr = today.split("\\.");
String[][] termsArr = new String[termSize][2];
String[][] privArr = new String[privSize][2];
termsArr = arrSplit(terms);
privArr = arrSplit(privacies);
for (int i = 0; i < privSize; i++) {
String[] deadline = findDeadline(privArr[i], termsArr, termSize);
if(checkDeadline(todayArr, deadline)){
temp[i] = i+1;
}
}
int size = 0;
for (int i = 0; i < privSize; i++) {
if (temp[i] != 0)
size++;
}
int idx = 0;
int[] answer = new int[size];
for (int i = 0; i < privSize; i++) {
if (temp[i] != 0) {
answer[idx] = temp[i];
idx++;
}
}
return answer;
}
}
- 무엇을 새롭게 알았는지
split에 대해 배웠다.. 자바는 형변환 함수가 너무 길고해서 split함수가 있는지 몰랐는데..
이건 또 있어서 나름? 편했다.
오늘 내배캠(9-9) 첫 날이라 너무 피곤해서 split 함수 정리를 못하겠다ㅠ
언젠가 기억나거나 다시 또 쓸일 있으면 그 때 정리해야지
내일 학습할 것은 무엇인지 (최대 3개)
- 정보처리기사 실기
- 자바 형변환 정리
- 클럽99 코딩테스트(미들러)
728x90
반응형
'💡 코테' 카테고리의 다른 글
프로그래머스(내적) (0) | 2024.04.17 |
---|---|
시간 초과 및 프로그래머스(연속된 부분 수열의 합) (1) | 2024.04.16 |
프로그래머스(JadenCase 문자열 만들기) (0) | 2024.04.14 |
깊이 우선 탐색(DFS: Depth-First Search) 및 프로그래머스(모음사전) (0) | 2024.04.13 |
프로그래머스(2016년) (0) | 2024.04.12 |