난이도: 레벨2(?)
소요시간: 30분
PCCP 강의 문제이다. 강의를 보았기에 쉽게 풀 수 있었다.
이번 네이버 공채 코딩테스트 이것과 비슷한 유형이였다.
시간을 분으로 통일시키고, 입출차 시간리스트, 차가 남아있는지 확인하는 리스트, 총 합친시간의 3개의 리스트가. 필요하다.
처음에는 튜플형태로 관리를 하려고 했으나 리스트로 푸는 것이 더욱 효율 적이란 것을 깨달았다. 차량의 번호가 0~9999로 정해져 있기에 10000크기의 리스트를 만들면 쉽게 풀 수 있다.
import math
def solution(fees, records):
answer = []
carIn = [0 for _ in range(10000)]
isIn = [False for _ in range(10000)]
sumTime = [0 for _ in range(10000)]
for i in range(len(records)):
inputTime, num, inOut = records[i].split(" ")
hour, minute = inputTime.split(':')
time = int(hour) * 60 + int(minute)
num = int(num)
if inOut == "IN":
carIn[num] = time
isIn[num] = True
elif inOut == "OUT":
sumTime[num] += time - carIn[num]
isIn[num] = False
for i in range(10000):
if isIn[i] == True:
sumTime[i] += (23 * 60 + 59) - carIn[i]
for i in range(10000):
if sumTime[i] == 0:
continue
else:
if sumTime[i] <= fees[0]:
answer.append(fees[1])
else:
answer.append(fees[1] + math.ceil(((sumTime[i] - fees[0]) / fees[2])) * fees[3])
return answer
'Problem Solving > 구현' 카테고리의 다른 글
평균 구하기 (0) | 2023.09.16 |
---|---|
약수의 합 (0) | 2023.09.16 |
kakao2018 셔틀버스(R) (0) | 2023.04.12 |
BOJ2504 괄호의 값 (R) (0) | 2023.04.07 |
BOJ1138 한 줄로 서기 (0) | 2023.03.28 |