Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] [KAKAO] Lv.2 주차 요금 계산 [Python, 파이썬] 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/92341
- 2022 KAKAO BLIND RECRUITMENT 문제
- 🔑 : 누적 주차 시간 구한 방법
- 기본적으로 시간은 05:34 일 때, 5*60 + 36 = 336 분으로 만든다.
- 같은 차량끼리, OUT 일 때 시간의 합 - IN 일 때 시간의 합 = 누적 주차 시간이 구해진다.
- 그래서 IN 이면은 시간을 분으로 변환해 준 후 빼주는 작업을 하고
- OUT 이면 시간을 분으로 변환해 준 후 더해주는 작업을 했다.
- 추가로 마지막까지 나가지 않는 차량에 대해서는 요금 계산할 때 확인을 하고
- (23시59분 = 1439분)을 더해주고 요금 계산을 진행
import math
def solution(fees, records):
answer = []
기본시간, 기본요금, 단위시간, 단위요금 = fees[0], fees[1], fees[2], fees[3]
주차정보 = []
차량번호 = {}
for i in records: # 주차 기록들을 순회
x = i.split() # "05:34 5961 IN" 형태를 ['05:34', '5961', 'IN']으로 변경
주차정보.append(x) # 주차정보 리스트에 ['시간', '차번호', 'IN/OUT'] 추가
if x[1] not in 차량번호: # 차량번호 딕셔너리에 안들어간 번호면
차량번호[x[1]] = [0, 0] # '차량번호' : [0, 0] 쌍의 key : value 생성
차량번호 = dict(sorted(차량번호.items())) # 완성된 차량번호 딕셔너리를 정렬
# 누적 주차 시간(분) 구하기
for 기록 in 주차정보: # 위에서 만들어진 주차정보 리스트 순회
if 기록[2] == 'IN': # 기록 = ['시간', '차번호', 'IN/OUT']
차량번호[기록[1]][0] -= (int(기록[0][:2]) * 60 + int(기록[0][3:])) # '차량번호' : [여기에, 0] 빼기
차량번호[기록[1]][1] = 1 # '차량번호' : [0, 여기를] 주차중이면 1로 설정
elif 기록[2] == 'OUT':
차량번호[기록[1]][0] += (int(기록[0][:2]) * 60 + int(기록[0][3:])) # '차량번호' : [여기에, 0] 더하기
차량번호[기록[1]][1] = 0 # '차량번호' : [0, 여기를] 나갔으면 0으로 설정
# 주차 시간 만큼의 요금 구하기
for key in 차량번호: # 차량번호 : [계산된 분, 0 or 1] 쌍의 딕셔너리를 순회
if 차량번호[key][1] == 1: # 23시59분까지 안나간 차
차량번호[key][0] += 1439 # (23시59분 = 1439분)을 더해준다.
요금 = 기본요금 + math.ceil(((차량번호[key][0]-기본시간) / 단위시간)) * 단위요금
if 요금 < 기본요금: # 계산된 요금이 기본요금 보다 낮으면 기본요금 청구
answer.append(기본요금)
else : answer.append(요금) # 아니면 계산된 요금 청구
else:
요금 = 기본요금 + math.ceil(((차량번호[key][0]-기본시간) / 단위시간)) * 단위요금
if 요금 < 기본요금:
answer.append(기본요금)
else : answer.append(요금)
return answer
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 괄호 회전하기 [Python, 파이썬] (0) | 2023.05.17 |
---|---|
[프로그래머스] Lv.2 구명보트 [Python, 파이썬] (0) | 2023.05.16 |
[프로그래머스] [KAKAO] Lv.1 신고 결과 받기 [Python, 파이썬] (0) | 2023.04.10 |
[프로그래머스] Lv.2 카펫 [Python, 파이썬] (0) | 2023.04.08 |
[프로그래머스] Lv.2 영어 끝말잇기 [Python, 파이썬] (0) | 2023.04.08 |
Comments