728x90
2024-10-01 수정
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/92341
문제 풀이 방법
구현 문제이며, 입력으로 주어지는 각 차량의 출입 기록을 split 메서드를 이용해 잘 분리하면 데이터의 정리는 끝났다고 볼 수 있다.
이 문제에서 가장 중요한 로직은 시간 계산 로직이다. 이 문제에서는 분 단위로 계산하기 때문에 24간을 나타내는 1440분에서 1분 뺀 1439분을 잘 이용해야 한다. 1439 - (각 차량의 출입에서의 시간)을 이용해 23시 59분 까지 남은 시간을 구한 뒤, 차량의 시간 데이터에 들어올 때는 +, 나갈때는 - 해주면 그 차량이 누적으로 주차장을 이용한 시간을 알 수 있다.
내가 작성한 코드
const solution = (fees, records) => {
const map = new Map();
const [dT, dF, aT, aF] = fees;
records.forEach((e) => {
const [t, car, type] = e.split(' ');
const [h, m] = t.split(':');
const time = (+h * 60) + (+m);
if (type === "IN") {
map.set(car, map.has(car) ? map.get(car) + (1439 - time) : (1439 - time));
}
else {
map.set(car, map.has(car) ? map.get(car) - (1439 - time) : (1439 - time));
}
});
return [...map].sort((a, b) => a[0] - b[0]).map(([car, time]) => time > dT ? dF + (Math.ceil((time - dT) / aT) * aF) : dF);
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 완전탐색 / 땅따먹기 (0) | 2023.09.09 |
---|---|
[JS] 2Level / 완전탐색 / 요격 시스템 (0) | 2023.09.08 |
[JS] 2Level / 연습 문제 / 요격 시스템 (0) | 2023.09.06 |
[JS] 2Level / 2018 KAKAO BLIND RECRUITMENT / [3차] n진수 게임 (0) | 2023.08.24 |
[JS] 2Level / 연습문제 / 할인 행사 (0) | 2023.08.22 |