📝 문제
💡 동호는 새악대로 T 통신사의 새 핸드폰 옴머나를 샀다.
새악대로 T 통신사는 동호에게 다음 두 가지 요금제 중 하나를 선택하라고 했다.
1. 영식 요금제
2.민식 요금제
영식 요금제는 30초마다 10원씩 청구된다.
이 말은 만약 29초 또는 그 보다 적은 시간 통화를 했으면 10원이 청구된다.
만약 30초부터 59초 사이로 통화를 했으면 20원이 청구된다.
민식 요금제는 60초마다 15원씩 청구된다.
이 말은 만약 59초 또는 그 보다 적은 시간 통화를 했으면 15원이 청구된다.
만약 60초부터 119초 사이로 통화를 했으면 30원이 청구된다.
동호가 저번 달에 새악대로 T 통신사를 이용할 때,
통화 시간 목록이 주어지면 어느 요금제를 사용 하는 것이 저렴한지 출력하는 프로그램을 작성하시오.
⚙️ 입력 : 동호가 저번 달에 이용한 통화의 개수 N이 주어진다.
N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다.
통화 시간은 10,000보다 작거나 같은 자연수이다.
⚙️ 출력 : 첫째 줄에 싼 요금제의 이름을 출력한다.
그 후에 공백을 사이에 두고 요금이 몇 원 나오는지 출력한다.
만약 두 요금제의 요금이 모두 같으면 영식을 먼저 쓰고 민식을 그 다음에 쓴다.
영식은 Y로, 민식은 M으로 출력한다.
1267번: 핸드폰 요금
동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다.
www.acmicpc.net
✅ 풀이
y = (30, 10)
m = (60, 15)
n = int(input())
test = list(map(int, input().split()))
y_sum = 0
m_sum = 0
for item in test:
y_sum += (((item//y[0])+1)*y[1])
m_sum += (((item//m[0])+1)*m[1])
if y_sum > m_sum:
print("M %d" %m_sum)
elif m_sum > y_sum:
print("Y %d" %y_sum)
elif y_sum == m_sum:
print("Y M %d" %y_sum)
💡 우선 영식, 민식 요금제의 정보를 미리 저장해두었다.
그 다음 입력되는 케이스 별로 요금제 기준 시간으로 나눠 1을 더해주었는데,
이는 기준 시간이 되기 전만큼 사용하더라도 단위 요금을 청구하기 때문이다.
이후로는 각 요금제의 대소관계를 비교해, 적절한 답안을 출력하도록 했다.