개발/알고리즘

프로그래머스_개인정보 수집 유효기간

송디 2024. 5. 2. 13:22

출처 : 프로그래머스
출처 : 프로그래머스

 

 해결 방법

문자열을 잘 가지고 놀아야 하는 문제이다.  계산된 개인정보 약관과 현재 날짜를 비교를 하면 되는데, 구조화를 잘 해놓기만 하면 쉽게 풀 수 있다.

 

 코드 

function solution(today, terms, privacies) {
    var answer = [];
    let map = new Map();

    for(key in terms){
        map.set(terms[key].substr(0, 1),Number(terms[key].split(' ')[1]))
    }
    for(key in privacies){
        let year = Number(privacies[key].substr(0,4))
        let month = Number(privacies[key].substr(5,2))
        let date = Number(privacies[key].substr(8, 2))
        let privacy = privacies[key].substr(11)
        
        let lastDate = date == 1 ? 28 : date - 1;
        let extraMonth = date == 1 ? -1 : 0;
        let lastYear = year;
       
        if((month + map.get(privacy)) % 12 == 0){
            lastYear = ((month + map.get(privacy)) / 12) - 1 + year;
            console.log(lastYear + "l")
        }else{
            lastYear = (month + map.get(privacy)) > 12 ? Math.floor((month + map.get(privacy)) / 12) + year : year
        }
        let lastMonth =  (month + map.get(privacy)) % 12 == 0 ? 12 :(month + map.get(privacy)) % 12 
        lastMonth += extraMonth; 
        console.log(lastYear+ "." + lastMonth+"." + lastDate)
        if(today.split('.')[0] > lastYear){
            answer.push(Number(key) + 1)
        }else if(today.split('.')[0] == lastYear && today.split('.')[1] > lastMonth){
            answer.push(Number(key) + 1)
        }else if(today.split('.')[0] == lastYear && today.split('.')[1] == lastMonth && today.split('.')[2] > lastDate){
            answer.push(Number(key) + 1)
        }
    }
    return answer;
}
728x90