Tesseractjh
한 걸음씩
Tesseractjh
전체 방문자
오늘
어제
  • 전체 (293)
    • IT (30)
      • JavaScript (7)
      • TypeScript (5)
      • React (5)
      • Next.js (3)
      • MongoDB (2)
      • Webpack (2)
      • HTML & CSS (1)
      • Git (0)
      • AWS (1)
      • 기타 (4)
    • 연습장 (259)
      • 백준(BOJ) 문제풀이 (185)
      • 프로그래머스 문제풀이 (61)
      • LeetCode 문제풀이 (2)
      • HackerRank 문제풀이 (7)
      • 낙서장 (3)
      • 기타 (1)
    • 프로젝트 (3)
      • 지뢰피하기 (1)
      • 키릴-라틴 문자 변환기 (1)
      • Flex & Grid (1)
    • 멋쟁이사자처럼 프론트엔드 스쿨 1기 (1)
      • 일기 & 회고록 (1)

인기 글

티스토리

hELLO · Designed By 정상우.
Tesseractjh

한 걸음씩

[프로그래머스 Level 1] 개인정보 수집 유효기간 - JavaScript
연습장/프로그래머스 문제풀이

[프로그래머스 Level 1] 개인정보 수집 유효기간 - JavaScript

2024. 5. 19. 01:19

🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/150370

✏️ 풀이

function solution(today, terms, privacies) {
    const termPeriodMap = terms.reduce((acc, term) => {
        const [termName, period] = term.split(' ');
        acc[termName] = Number(period);
        return acc;
    }, {});
    
    const isExpired = (privacy) => {
        const [date, term] = privacy.split(' ');
        const termPeriod = termPeriodMap[term];
        const expirationDate = new Date(date);
        return new Date(today) >= expirationDate.setMonth(expirationDate.getMonth() + termPeriod);
    };
    
    return privacies
        .map((privacy, i) => isExpired(privacy) ? i + 1 : false)
        .filter(Boolean);
}

 

각 개인정보별로 수집 일자 + 보관 기한과 오늘 날짜를 비교하여 만료 여부를 판단하여 필터링하면 된다.

먼저 각 약관 종류별 보관 기한을 별도 map으로 만들어 놓는다. 그 다음 privacies를 순회하면서 각 개인 정보의 만료 여부를 판단한다.

 

이 때, 만료 여부 판단은 JavaScript의 new Date간 비교 연산자를 사용할 수 있다는 점을 활용하여 단순하게 표현할 수 있다. 수집 일자 + 보관 기한을 계산할 때에는 setMonth만 사용해서 n달 후의 날짜를 얻을 수 있고, 이와 오늘 날짜를 비교하면 된다. 여기서 setMonth에 12 이상의 수가 들어가도 자동으로 연도까지 계산이 되므로 별도로 계산하여 setYear를 할 필요가 없다.


마지막으로 각 privacy의 만료 여부를 판단하여 만료되었으면 index + 1을, 만료되지 않으면 false로 변환하고 truthy한 값만 필터링하여 반환하면 된다.

 

 

저작자표시 비영리 변경금지 (새창열림)

'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글

[프로그래머스 Level 1] 대충 만든 자판 - JavaScript  (0) 2024.08.04
[프로그래머스 Level 2] 전화번호 목록 - JavaScript  (0) 2023.08.06
[프로그래머스 Level 2] 덧칠하기 - JavaScript  (0) 2023.03.03
[프로그래머스 Level 3] 베스트앨범 - JavaScript  (0) 2023.03.01
[프로그래머스 Level 2] 소수 찾기 - JavaScript  (0) 2023.02.27
    '연습장/프로그래머스 문제풀이' 카테고리의 다른 글
    • [프로그래머스 Level 1] 대충 만든 자판 - JavaScript
    • [프로그래머스 Level 2] 전화번호 목록 - JavaScript
    • [프로그래머스 Level 2] 덧칠하기 - JavaScript
    • [프로그래머스 Level 3] 베스트앨범 - JavaScript
    Tesseractjh
    Tesseractjh
    바닐라 자바스크립트를 좋아하는 개발자입니다

    티스토리툴바