Stay Hungry Stay Foolish

SWEA

[SWEA] 1284. 수도 요금 경쟁 (Python/D2)

dev스카이 2024. 10. 16. 22:58

[문제 링크] 👉 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


설명

두 회사 A, B중 더 적게 수도 요금을 부담해도 되는 곳을 고른다. 수도 요금은 한 달동안 사용한 수도의 양에 따라 정해진다.

  • A사 : 1리터당 P원의 돈을 내야 한다.
  • B사 : 기본 요금이 Q 원이고, 월간 사용량이 R 리터 이하인 경우 기본 요금만 청구된다.
    • 하지만 R 리터보다 많은 양을 사용한 경우 초과량에 대해 1리터당 S원의 요금을 내야한다.

한 달간 사용하는 수도의 양이 W 리터라고 할 때 요금이 더 저렴한 회사를 골라 그 요금을 출력하라.

 

 

풀이

설명에 나온대로 구현하면 된다. 

주의할 점은 B회사의 요금 계산에서 R 리터를 초과할 경우, 기본 요금 Q + 초과량 1리터 당 S원을 내야한다는 점이다.

 

 

Solution

test_case = int(input())

def A(p, w):
    return p * w

def B(q, r, s, w):
    if w <= r:
        return q
    else:
        return q + (s * (w - r))

for t in range(1, test_case + 1):
    p, q, r, s, w = map(int, input().split())
    a = A(p, w)
    b = B(q, r, s, w)
    if a < b:
        print("#%d %d" %(t, a))
    else:
        print("#%d %d" %(t, b))

 

 

short code

test_case = int(input())

for t in range(1, test_case + 1):
    p, q, r, s, w = map(int, input().split())
    a = p * w
    b = q
    if r < w:
        b += s * (w - r)

    if a < b:
        print("#%d %d" %(t, a))
    else:
        print("#%d %d" %(t, b))

 

👩‍💻 회고

어렵지 않은 문제였지만, B회사의 요금을 계산하는 곳에서 약간 어리둥절했다. 테스트 케이스를 보고 금방 알아챘지만 못 풀고 풀이라도 봤으면 허망했을 것 같다.