주차 요금 계산
코딩테스트 연습 - 주차 요금 계산
[180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000]
programmers.co.kr
- 내 풀이
- IN,OUT 기록 리스트에 따로 담기
- 입차, 출차 시에 리스트에 넣고 빼기 → 출차하지 않은 차량번호들 23:59로 출차 기록 넣기
- 리턴값이 차량번호 순서이기 때문에 정렬해서 계산 후 출력하면 됨
- 여러번 입차한 기록이 있는 경우 분 값을 합쳐서 한번에 계산
- 올림 함수: math.ceil()
[Python] 소수점 올림 함수 ceil(), 내림 함수 floor()
소수점 올림/ 내림 함수 특징 math 라이브러리에 속해있음 → import math 인자로 들어온 값의 올림/ 내림 값을 반환 반환된 값은 정수 타입(int) 음수의 올림/ 내림 도 가능 올림 함수: math.ceil() import
yygs321.tistory.com
import math
from collections import deque
def solution(fees, records):
IN=[]
OUT=[]
minute=0
answer = []
carIO=[]
for r in records:
t,n,io=r.split() #입/출차 시간, 차량 번호, IN/OUT 기록
if io=="IN":
IN.append([n,t])
carIO.append(n)
else:
OUT.append([n,t])
carIO.remove(n)
if carIO: #출차 안한 차들 23:59로 OUT기록 넣기
for c in carIO:
OUT.append([c,"23:59"])
IN.sort(key=lambda x:x[0])
OUT.sort(key=lambda x:x[0])
for i in range(len(IN)):
result=0
h1,m1=IN[i][1].split(":")
h2,m2=OUT[i][1].split(":")
h1,m1,h2,m2=int(h1),int(m1),int(h2),int(m2)
if m2>=m1:
minute+=(m2-m1)+(h2-h1)*60
else:
h2-=1
m2+=60
minute+=(m2-m1)+(h2-h1)*60
if i<len(IN)-1 and IN[i][0]==IN[i+1][0]: #같은 번호가 다시 들어온 기록이 있을 경우 시간 합쳐서 계산
continue
else: #같은 번호가 또 없을 경우
if minute<=fees[0]:
answer.append(fees[1])
else:
minute-=fees[0]
result=fees[1]+ math.ceil(minute/fees[2])*fees[3] #올림
answer.append(result)
minute=0
return answer
fees=[180, 5000, 10, 600]
records=["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT",
"07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"]
print(solution(fees, records)
#결과
[14600, 34400, 5000]
fees=[120, 0, 60, 591]
records=["16:00 3961 IN","16:00 0202 IN",
"18:00 3961 OUT","18:00 0202 OUT","23:58 3961 IN"]
fees2=[1, 461, 1, 10]
records2=["00:00 1234 IN"]
print(solution(fees, records)
print(solution(fees2, records2)
#결과
[0, 591]
[14841]
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 2] [완전 탐색] 카펫 (0) | 2022.04.27 |
|---|---|
| [프로그래머스] [Level 2] 숫자의 표현 (0) | 2022.04.26 |
| [프로그래머스] [Level 2] [정렬] H-Index (0) | 2022.04.21 |
| [프로그래머스] [Level 2] 최댓값과 최솟값 (0) | 2022.04.21 |
| [프로그래머스] [Level 2] 최솟값 만들기 (0) | 2022.04.20 |