ericagong / algorithm_solving

2 stars 0 forks source link

[날짜 계산] 개인정보 수집 유효기간 #69

Open ericagong opened 1 year ago

ericagong commented 1 year ago

⭐ 성찰

  1. ⭐ 날짜나 시간 계산 시에는 반드시, 최소 단위로 변환하여 차이를 계산한 뒤, 단위별로 재계산 ⭐
  2. 식을 세울 때, <인지 <= 인지가 애매한 경우가 있다면, 일단 구현 한 뒤, 디버깅 시 확인!!!

❓ 문제 상황

개인정보 수집 유효기간

👨‍💻 문제 해결

✅ 1차 풀이: 최소 단위로 변환해 차이 계산 후, 단위 재계산

  1. 오늘 날짜 계산
  2. terms에서 년/월/일을 파싱하여 유효기간을 일 단위로 계산
  3. privacies를 순회하며, 년/월/일을 파싱하여 시작 날짜를 계산하고, 오늘 날짜와의 차이가 유효기간보다 길다면 result에 추가
    
    // https://school.programmers.co.kr/learn/courses/30/lessons/150370

function solution(today, terms, privacies) { // 오늘 날짜 계산 const [yy, mm, dd] = today.split("."); const CURR = Number(yy) 12 28 + Number(mm) * 28 + Number(dd);

// 개인 정보 타입별 유효기간 계산
let dict = {};
terms.forEach((term) => {
const [type, period] = term.split(" ");
dict[type] = Number(period) * 28;

});

// 개인 정보별 유효기간 파기 여부 계산

let result = []; for (let i = 0; i < privacies.length; i++) { const [date, termType] = privacies[i].split(" "); const [year, month, day] = date.split("."); const START = Number(year) 12 28 + Number(month) * 28 + Number(day); if (CURR - START >= dict[termType]) { result.push(i + 1); } }

return result; }