[2023 Kakao Blind Recruitment] 개인정보 수집 유효기간

김아현·2023년 7월 7일
0

코딩테스트

목록 보기
15/26

// UTC to KST
function getFormattedDate(dateString) {
    const date = new Date(dateString);
    return date.toLocaleString('sv');
}

// 약관 기한이 지났는지 아닌지 Boolean 타입으로 리턴
function checkPrivacies(today, time, term) {
    const parsedDate = new Date(getFormattedDate(time));
    const targetDate = new Date(parsedDate.setMonth(parsedDate.getMonth() + Number(term)));
    const currentDate = new Date(today);
    return getFormattedDate(targetDate) <= getFormattedDate(currentDate);
}

function solution(today, terms, privacies) {
    const answer = [];
    for (let i = 0; i < privacies.length; i++) {
        const cur = privacies[i].split(' ');
        for (let j = 0; j < terms.length; j++) {
            const term = terms[j].split(' ');
            if (cur[1] === term[0] && checkPrivacies(today, cur[0], term[1])) {
                answer.push(i + 1);
            }
        }
    }
    return answer;
}

사실 Time, Date 연산은 기본이긴 하겠지만
구현에 많은 시간을 쓰고 싶지않아서 js Date객체로 연산을 대체했다.
Javscript의 Date객체를 쓰면 Terms에 주어진 month 연산이 쉬워진다.

까다로웠던 점이라면 주어지는 today가 KST이기 때문에 new Date()로 생성한 UTC Date 객체를 KST Date로 한번 더 파싱해줘야 한다는 점

참고 : Date 연산
참고2 : Date format

profile
멘티를 넘어 멘토가 되는 그날까지 파이팅

0개의 댓글