반응형
문제 출처)
https://school.programmers.co.kr/learn/courses/30/lessons/150370
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이 코드) 정확성 95%
function solution(today, terms, privacies) {
const answer = [];
const [Y, M, D] = today.split('.').map(Number);
let termsGraph = new Map();
for (let i = 0; i < terms.length; i++) {
const [alphabet, number] = terms[i].split(' ');
termsGraph.set(alphabet, parseInt(number)); // 유효기간을 숫자로 변환하여 저장
}
for (let i = 0; i < privacies.length; i++) {
const [day, alphabet] = privacies[i].split(' ');
const [y, m, d] = day.split('.').map(Number);
const number = termsGraph.get(alphabet);
let newM = m + number;
let newY = y;
// 유효기간이 12개월을 초과하는 경우 연도를 조정
if (newM > 12) {
newY += Math.floor(newM / 12);
newM = newM % 12;
}
// 유효기간이 지났는지 확인
if (newY < Y || (newY === Y && newM < M) || (newY === Y && newM === M && d <= D)) {
answer.push(i + 1); // 0이 아닌 1부터 시작하는 인덱스를 반환
}
}
return answer;
}
수정 전 틀린 풀이 코드)
function solution(today, terms, privacies) {
var answer = [];
const [Y, M, D] = today.split('.');
let termsGraph = new Map();
for(let i=0; i<terms.length; i++){
const [alphabet, number] = terms[i].split(' ')
if(!termsGraph.has(alphabet))
termsGraph.set(alphabet, number); //number가 string 타입으로 저장됨.
}
for(let i=0; i<privacies.length; i++){
const [day, alphabet] = privacies[i].split(' '); //둘다 string 타입
let [y, m, d] = day.split('.').map(v => +v); //세개 다 number 타입
let number = Number(termsGraph.get(alphabet));
let newM = m + number;
let newY = y;
console.log(newY, newM)
if(newM > 12){
newY += Math.floor(newM / 12);
newM = newM - (12 * Math.floor(newM / 12) )
}
console.log(newY, newM, '2')
const currentDate = `${Y}${M}${D}`;
if(newM < 10){
newM = '0' + String(newM);
}
if(d < 10){
d = '0' + String(d);
}
const privacyDate = `${newY}${newM}${d}`
console.log(currentDate)
console.log(privacyDate)
if(Number(privacyDate) > Number(currentDate)){
answer.push(i)
}
}
return answer;
}
반응형
'알고리즘 문제 풀기' 카테고리의 다른 글
프로그래머스: 택배 배달과 수거하기- javascript(구현) (1) | 2024.03.16 |
---|---|
백준 2529: 부등호 - javascript(완전탐색/dfs) (0) | 2024.03.16 |
백준 16236: 아기 상어 - javascript(bfs) (2) | 2024.03.14 |
백준 1932: 정수 삼각형 - javascript(dp) (1) | 2024.03.14 |
백준 2847: 게임을 만든 동준이 - javascript(그리디) (0) | 2024.03.14 |