[백준] 2979 : 트럭 주차 - Python

Chooooo·2023년 2월 22일
0

알고리즘/백준

목록 보기
81/182
post-thumbnail

트럭 주차

상근이는 트럭을 총 세 대 가지고 있다. 오늘은 트럭을 주차하는데 비용이 얼마나 필요한지 알아보려고 한다.

상근이가 이용하는 주차장은 주차하는 트럭의 수에 따라서 주차 요금을 할인해 준다.

트럭을 한 대 주차할 때는 1분에 한 대당 A원을 내야 한다. 두 대를 주차할 때는 1분에 한 대당 B원, 세 대를 주차할 때는 1분에 한 대당 C원을 내야 한다.

A, B, C가 주어지고, 상근이의 트럭이 주차장에 주차된 시간이 주어졌을 때, 주차 요금으로 얼마를 내야 하는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100)

다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장에서 떠난 시간이다. 도착한 시간은 항상 떠난 시간보다 앞선다. 입력으로 주어지는 시간은 1과 100사이 이다.

출력

첫째 줄에 상근이가 내야하는 주차 요금을 출력한다.

import sys
sys.stdin = open("input.text", "rt")

temp = list(map(int, input().split()))

data = []
timeA = 24242424
timeB = -24242424
for _ in range(3):
    start, end = map(int, input().split())
    data.append((start,end))
    timeA = min(timeA, start)
    timeB = max(timeB, end)

res = 0
for time in range(timeA, timeB + 1):
    cnt = 0
    for i in range(3):
        if data[i][0] <= time < data[i][1]:
            cnt += 1
    if cnt == 1: #한 트럭만
        res += temp[0]
    elif cnt == 2: #두 트럭만
        res += temp[1] * 2
    elif cnt == 3:
        res += temp[2] * 3

print(res)

🏈 코멘트

시작점을 카운팅하는데 포함시킬꺼면 끝점은 포함시키면 안된다. 그렇기에 위와 같이 카운트로 해당 시간대에 몇대가 있는지 확인하고 결과를 위와 같이 구하면 된다 !

  • 시간대 만큼 리스트를 만들어서 풀어도 된다.
import sys
sys.stdin = open("input.text", "rt")

temp = list(map(int, input().split()))

data = []
timeA = 24242424
timeB = -24242424
for _ in range(3):
    start, end = map(int, input().split())
    data.append((start,end))
    timeA = min(timeA, start)
    timeB = max(timeB, end)

cnt = [0] * timeB
for i in range(3):
    start = data[i][0]
    end = data[i][1]
    for j in range(start, end): #시작점을 포함시킬꺼면 끝점은 빼야함.
        cnt[j] += 1

res = 0
for x in cnt:
    if x == 1:
        res += temp[0]
    elif x == 2:
        res += temp[1] * 2
    elif x == 3:
        res += temp[2] * 3
print(res)
profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글