■ 해결 방법
문자열을 잘 가지고 놀아야 하는 문제이다. 계산된 개인정보 약관과 현재 날짜를 비교를 하면 되는데, 구조화를 잘 해놓기만 하면 쉽게 풀 수 있다.
■ 코드
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
'개발 > 알고리즘' 카테고리의 다른 글
프로그래머스_달리기 경주 (0) | 2024.05.03 |
---|---|
프로그래머스_[PCCP 기출문제] 1번 / 붕대 감기 (1) | 2024.05.01 |
프로그래머스_겹치는 선분의 길이 (0) | 2024.04.22 |
프로그래머스_평행 (0) | 2024.04.19 |
프로그래머스_구명보틀 (0) | 2021.08.26 |