풀이 과정
- 오늘 날짜를 연, 월, 일로 나누기:
split()
, Number()
- 약관을 객체로 저장하기:
split()
- 개인정보 배열의 각 요소에 대해 반복
- 각 요소 파싱
- 날짜와 약관 분리:
split()
- 연, 월, 일 분리:
split()
- 4에서 분리한 날짜에 약관에 해당하는 기간 더하기
- 5의 날짜와 오늘 날짜의 연, 월, 일을 모두 일로 환산하여 더한 값을 비교
코드
function solution(today, terms, privacies) {
const [tYear, tMonth, tDate] = today.split('.').map((e) => Number(e));
const termsObj = {};
terms
.map((e) => e.split(' '))
.forEach((e) => (termsObj[e[0]] = Number(e[1])));
const result = [];
privacies.forEach((privacy, i) => {
const [tmp, term] = privacy.split(' ');
let [year, month, date] = tmp.split('.').map((e) => Number(e));
month += termsObj[term];
const todayTotal = tYear * 12 * 28 + tMonth * 28 + tDate;
const expiredTotal = year * 12 * 28 + month * 28 + date;
if (todayTotal >= expiredTotal) result.push(i + 1);
});
return result;
}