[프로그래머스] 개인정보 수집 유효기간 (JS)

hhkim·2023년 7월 24일
0

Algorithm - JavaScript

목록 보기
74/188
post-thumbnail

풀이 과정

  1. 오늘 날짜를 연, 월, 일로 나누기: split(), Number()
  2. 약관을 객체로 저장하기: split()
  3. 개인정보 배열의 각 요소에 대해 반복
  4. 각 요소 파싱
    • 날짜와 약관 분리: split()
    • 연, 월, 일 분리: split()
  5. 4에서 분리한 날짜에 약관에 해당하는 기간 더하기
    • 약관 기간을 에 더하기
  6. 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;
}

0개의 댓글