https://school.programmers.co.kr/learn/courses/30/lessons/150370
먼저 이 문제를 풀기 위해서 생각한 점은,
1. terms(약관)에 저장된 값을 key-value의 형태로 map에 저장해 key(A)값을 이용해서 value(6)인 유효기간을 가져온다.
2. 년/월/일의 형식을 지키려면 복잡하고 배열공간도 많이 요구되므로 "년/월/일" -> "일" 로 환산해서 계산한다.
3. 문자열을 마침표('.')로 구분하여 자르기 위해 str.split(".")을 이용할 경우 빈 배열이 반환된다. str.split("[.]") 사용한다.
str.split(".");
split() 메소드는 파라미터로 정규식을 입력 받는데,
정규식에서 마침표(.)는 임의의 한 문자를 의미합니다.
따라서, 문자열을 마침표(.)로 구분하고 싶다면 아래와 같은 방법을 사용해야 합니다.
import java.util.Arrays; public class SplitWithDot {
public static void main(String[] args) {
String str = "a.b.c";
String[] strArr1 = str.split("[.]");
String[] strArr2 = str.split("\\.");
System.out.println(Arrays.toString(strArr1)); // [a, b, c]
System.out.println(Arrays.toString(strArr2)); // [a, b, c]
}
}
import java.util.*;
class Solution {
public List<Integer> solution(String today, String[] terms, String[] privacies) {
List<Integer> answer = new ArrayList<>();
HashMap<String,Integer> map = new HashMap<>();
// 1. 오늘 날짜 기준으로 년,월,일을 모두 하나로 더함. 꼭 년/월/일 형식을 지키지 않아도 됨!!
String[] td = today.split("[.]");
int privacyDate = (Integer.parseInt(td[0])*12*28) + (Integer.parseInt(td[1])*28)
+ Integer.parseInt(td[2]);
// 2. map으로 terms를 keu-value 형태로 저장
for(String t : terms){
String[] tm = t.split(" ");
map.put(tm[0],Integer.parseInt(tm[1]));
}
for(int i=0;i<privacies.length;i++){
String[] priv = privacies[i].split(" "); //priv[0] : 날짜 , priv[1] : 약관종류
String[] prDate = priv[0].split("[.]"); // 수집된 날짜 .로 split
String term = priv[1]; //String타입 약관
int deadLine = (Integer.parseInt(prDate[0])*12*28) + (Integer.parseInt(prDate[1])*28)
+ Integer.parseInt(prDate[2]) + (map.get(term)*28); // 가입날짜 + 약관 유효기간(map)
if(privacyDate >= deadLine){ //약관유효기간(deadLine)이 현재날짜(privacyDate)보다 작거나 같으면 개인정보 파기
answer.add(i+1);
}
}
return answer;
//return answer.stream().mapToInt(integer -> integer).toArray(); -> 반환타입을 int[]로 할 경우
}
}
출처: https://hianna.tistory.com/618 [어제 오늘 내일:티스토리]
'코딩테스트 > 문제풀이 팁' 카테고리의 다른 글
int형 2차원 배열 복합정렬조건 (0) | 2024.03.16 |
---|---|
[Kakao] 가장 많이 받은 선물 (0) | 2024.03.15 |
Stream, 되도록이면 사용하지 말자 (0) | 2024.02.26 |
[HashSet, HashMap] 롤케이크 자르기 (0) | 2024.02.26 |
[HashMap] 여러 요소와 요소의 개수세기 (0) | 2024.02.25 |