본문 바로가기

dev/코테

주차 요금 계산

프로그래머스의 주차 요금 계산 문제를 풀었습니다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/92341

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제에 대한 설명은 위의 링크에서 확인하시면 됩니다.

 

소스 코드

 

이 문제를 풀 때 주의해야 할 점이 4개 있습니다.

 

첫 번째는 주차장 출입시간과 출차시간을 어떻게 계산할 지에 대한 것인데 어렵게 생각할 필요 없습니다.

 

출입시간 바로 뒤에 있는 시간이 출차시간입니다.

 

왜냐하면 주차장에 출입한 뒤에 또 출입할 수 없고, 출차한 뒤에 또 출차할 수 없기 때문입니다.

 

따라서 출입시간 바로 뒤의 시간이 출차시간이고

 

반대로 출차시간 바로 앞에 있는 시간은 출입시간입니다.

 

두 번째는 주차 시간을 구하는 것으로 자바 date를 사용하려고 했는데

 

소스코드를 간단히 하기 위해서 LocalTime을 사용했습니다.

 

LocalTime의 시간 계산은 Duration.between으로 하면 쉽게 할 수 있는데

 

한 가지 주의해야 할 점은 반환 값의 타입이 int가 아닌 long이기 때문에

 

long의 wrapper 객체 Long.intValue를 사용해야 합니다.

 

세 번째는 전체 주차시간이 기본 시간을 초과했을 경우 요금을 계산하는 것입니다.

 

문제에서 초과 주차시간을 단위 시간으로 나눴을 때 떨어지지 않으면 올림 처리를 해야 된다고 했습니다.

 

그런데 Math.ceil을 하면 원하는 값으로 올림이 안 되기 때문에

 

단위 시간으로 나눴을 때 나머지 값이 0이 아니었을 때 나눈 값의 몫에 1을 더해서 계산했습니다.

 

마지막 네 번째는 문제에서 요구한 자동차 번호 올림차순으로 결괏값을 반환하는 것입니다.

 

TreeMap을 사용하면 key 기준으로 자동으로 오름차순 정렬이 되기 때문에 따로 정렬할 필요 없습니다.

 

채점 결과

'dev > 코테' 카테고리의 다른 글

행렬과 연산  (0) 2022.12.17
성격 유형 검사하기  (0) 2022.12.15
숫자 짝꿍  (0) 2022.11.08
콜라 문제  (0) 2022.11.07
푸드 파이트 대회  (0) 2022.11.07