-
2022 KAKAO BLIND RECRUITMENT) 주차 요금 계산Algorithm/프로그래머스 2022. 8. 4. 14:32
https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
분할 정복(Divide and conquer algorithm)을 이용하여 문제에서 구해야할 값들을 세분화 시킬 수 있습니다.
1. 주차 시간
2. 주차 시간을 요금으로 환산
3. 정렬
function solution(fees, records) { var answer = []; const check = new Map(); const sum = new Map(); // 주차 요금 계산 function calculate(feesArr, totalTime) { const minTime = feesArr[0]; const minFee = feesArr[1]; const unitTime = feesArr[2]; const unitFee = feesArr[3]; return ( minFee + Math.ceil((totalTime > minTime ? totalTime - minTime : 0) / unitTime) * unitFee ); } // 개별 주차 시간 records.forEach((info) => { info = info.split(" "); const minutes = info[0].slice(0, 2) * 60 + Number(info[0].slice(3, 5)); if (check.has(info[1]) && info[2] === "OUT") { if (sum.has(info[1])) sum.set(info[1], sum.get(info[1]) + minutes - check.get(info[1])[0]); else sum.set(info[1], minutes - check.get(info[1])[0]); check.delete(info[1]); } else check.set(info[1], [minutes, info[2]]); }); [...check.keys()].forEach((v) => sum.set(v, sum.get(v) + 1439 - check.get(v)[0] || 1439 - check.get(v)[0]) ); // 정렬 answer = [...sum.keys()] .sort((a, b) => a - b) .map((v) => calculate(fees, sum.get(v))); return answer; }
'Algorithm > 프로그래머스' 카테고리의 다른 글
2018 KAKAO BLIND RECRUITMENT) [3차] 방금그곡 - Javascript 풀이 (0) 2022.08.02 2018 KAKAO BLIND RECRUITMENT) [1차] 프렌즈4블록 - Javascript 풀이 (0) 2022.08.01 2019 KAKAO BLIND RECRUITMENT) 후보키 - Javascript 풀이 (0) 2022.08.01 2021 KAKAO BLIND RECRUITMENT) 순위 검색 - Javascript 풀이 (0) 2022.07.31 2019 카카오 개발자 겨울 인턴십) 튜플 - Javascript 풀이 (0) 2022.07.27