*문제 출처는 프로그래머스에 있습니다.
문제 제목: 주차 요금 계산 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/92341
문제 설명
나의 풀이
from math import ceil
def solution(fees, records):
answer = []
dic = {}
result = {}
for car in records:
strings = car.split()
hour, minute = map(int, strings[0].split(":"))
clock = hour * 60 + minute
if strings[2] == "IN":
dic[strings[1]] = clock
elif strings[2] == "OUT":
if strings[1] in result:
result[strings[1]] += (clock - dic[strings[1]])
else:
result[strings[1]] = clock - dic[strings[1]]
del dic[strings[1]]
for car, invisible in dic.items():
if car in result:
result[car] += 1439 - invisible
else:
result[car] = 1439 - invisible
for number, time in sorted(result.items(), key=lambda x: x[0]):
answer.append(fees[1] + max(0, ceil((time - fees[0]) / fees[2])) * fees[3])
return answer
※ 알아야 할 것
map을 사용하면 리스트 안에 있는 원소들을 내가 원하는 타입으로 모두 바꿀 수 있다.
그리고 문제를 풀면서 느낀 점이라면 변수 이름을 정할 때 아무 생각 없이 적지말고 이 변수가 어떤 역할을 할지 생각을 하고 이름을 적어야겠다고 생각이 들었다. 변수 이름이 너무 헷갈려서 문제 푸는 시간이 더 오래 걸렸던 것 같다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-Python' 카테고리의 다른 글
Programmers / 방문 길이 / Python (0) | 2024.04.01 |
---|---|
Programmers / 땅따먹기 / Python (0) | 2024.03.29 |
Programmers / 뒤에 있는 큰 수 찾기 / Python (0) | 2024.03.27 |
Programmers / 더 맵게 / Python (0) | 2024.03.27 |
Programmers / 네트워크 / Python (0) | 2024.03.26 |