새소식

Programmers

[Programmers] 주차 요금 계산 문제 - (javascript)

  • -
728x90
문제 이름 :  주차 요금 계산

 

<<< 문제 내용 >>>

문제의 내용이 굉장히 길기 때문에
https://programmers.co.kr/learn/courses/30/lessons/92341 을 참고하세요.

 

function solution(fees, records) { let answer = []; const toMinute = (index) => { index = index.split(':').map(Number); return index[0]*60+index[1]; } let carInfo = {}; let allPkTime = {}; records.map((el, i)=>{ let info = el.split(' '); if(info[2] === 'IN'){ carInfo[info[1]] = info[0]; }else{ const outTime = toMinute(info[0]); const inTime = toMinute(carInfo[info[1]]); const parkingTime = outTime - inTime; if(info[1] in allPkTime){ allPkTime[info[1]] += parkingTime; }else{ allPkTime[info[1]] = parkingTime; } delete carInfo[info[1]]; } }) for(const i of Object.entries(carInfo)){ const lastTime = toMinute("23:59"); const inTime = toMinute(i[1]); const parkingTime = lastTime - inTime; if(i[0] in allPkTime){ allPkTime[i[0]] += parkingTime; }else{ allPkTime[i[0]] = parkingTime; } } allPkTime = Object.entries(allPkTime); allPkTime.sort((a,b)=> a[0] - b[0]).map((el)=>{ const parkingTime = (el[1] - fees[0])%fees[2] === 0 ? Math.floor((el[1] - fees[0])/fees[2]) : Math.floor((el[1] - fees[0])/fees[2])+1; if(parkingTime<0){ answer.push(fees[1]); }else{ answer.push(fees[1] + (parkingTime*fees[3])); } }); return answer; }

* 카카오 2022 블라인드 채용 문제 중 하나였다.

구현 문제였고, 특별한 알고리즘이 들어가는 것은 아니어서 많이들 다른 방식으로 푼 것 같았다.

 

블라인드 채용 때 파이썬으로 이 문제를 풀었었는데 그땐 나름 빠르게 풀었었다.

한참이 지나고서야 js로 다시한번 풀어보았는데 음.. 생각보다 오래걸려버렸다.

아마 그 이유는 문제 내용을 한번 풀어봤던거니 대충 읽고 넘어가서, 열심히 코딩하고 조건을 고려하지 않는

구현에서는 가장 치명적인 문제를 거듭했다..

 

그래도 여기서 배우게된건 구현할때는 먼저 모든 조건을 정리해두고 시작하는게 좋다는 것이다.

 

 

+ 나는 요즘 간단하게 단발성으로 메모할 수 있는 전자노트를 이용하고 있다.

광고는 아니고 다이소에서 싸게 5천원이면 구매할 수 있다.

필기감도 괜찮아서, 문제풀 때 유용하게 쓰일 수 있으니 아이패드나 갤럭시 탭 등이 없다면 고려해볼만 하다.

장점은 너무너무 가볍고, 단점은 불끄면 안보이는 정도..?

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.