안녕하세요
프로그래머스 JS [개인정보 수집 유효기간] 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 요약
오늘의 날짜가 2020.02.02 이고,
약관 A는 5달 동안 유효할 때,
["2019.01.01 D", "2019.11.15 Z", "2019.08.02 D", "2019.07.01 D", "2018.12.28 Z"]
약관이 만료된 요소는 몇 번째 인지 모두 반환하시오.
function solution(today, terms, privacies) {
const result = [];
const termsObject = {};
terms.forEach((term) => (termsObject[term.split(" ")[0]] = term.split(" ")[1]));
privacies.forEach((privacy, index) => {
const [date, term] = privacy.split(" ");
const expireDate = new Date(date);
expireDate.setMonth(expireDate.getMonth() + parseInt(termsObject[term]));
if (new Date(today) >= expireDate) {
result.push(index + 1);
}
});
return result;
}
solution(
"2020.01.01",
["Z 3", "D 5"],
["2019.01.01 D", "2019.11.15 Z", "2019.08.02 D", "2019.07.01 D", "2018.12.28 Z"]
);
1. 약관을 오브젝트로 만듭니다.
const termsObject = {};
terms.forEach((term) => (termsObject[term.split(" ")[0]] = term.split(" ")[1]));
{ Z: '3', D: '5' } termsObject
2. Date 객체를 이용하여 계약일자+약관기간 을 더합니다.
const [date, term] = privacy.split(" ");
const expireDate = new Date(date);
expireDate.setMonth(expireDate.getMonth() + parseInt(termsObject[term]));
2019-05-31T15:00:00.000Z
2020-02-14T15:00:00.000Z
2020-01-01T15:00:00.000Z
2019-11-30T15:00:00.000Z
2019-03-27T15:00:00.000Z
3. 만료가 된 요소의 번호를 담은 배열을 반환합니다.
if (new Date(today) >= expireDate) {
result.push(index + 1);
}
});
return result;
'프로그래머스 > Lv.1' 카테고리의 다른 글
프로그래머스 JS [바탕화면 정리] (0) | 2023.06.16 |
---|---|
프로그래머스 JS [달리기 경주] (0) | 2023.05.08 |
프로그래머스 JS [대충 만든 자판] (0) | 2023.05.08 |
프로그래머스 JS [덧칠하기] (0) | 2023.04.13 |
프로그래머스 JS [추억 점수] (0) | 2023.04.12 |