문제
동호는 새악대로 T 통신사의 새 핸드폰 옴머나를 샀다.
새악대로 T 통신사는 동호에게 다음 두 가지 요금제 중 하나를 선택하라고 했다.
1. 영식 요금제
2. 민식 요금제
영식 요금제는 30초마다 10원씩 청구된다.
이 말은 만약 29초 또는 그 보다 적은 시간 통화를 했으면 10원이 청구된다. 만약 30초부터 59초 사이로 통화를 했으면 20원이 청구된다.
민식 요금제는 60초마다 15원씩 청구된다.
이 말은 만약 59초 또는 그 보다 적은 시간 통화를 했으면 15원이 청구된다. 만약 60초부터 119초 사이로 통화를 했으면 30원이 청구된다.
동호가 저번 달에 새악대로 T 통신사를 이용할 때 통화 시간 목록이 주어지면
어느 요금제를 사용 하는 것이 저렴한지 출력하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1267
입력
동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다.
둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 싼 요금제의 이름을 출력한다. 그 후에 공백을 사이에 두고 요금이 몇 원 나오는지 출력한다.
만약 두 요금제의 요금이 모두 같으면 영식을 먼저 쓰고 민식을 그 다음에 쓴다. 영식은 Y로, 민식은 M으로 출력한다.
예제
#1
_input_
3
40 40 40
_output_
M 45
#2
_input_
3
61 61 61
_output_
Y M 90
#3
_input_
2
61 10
_output_
Y 40
문제 풀이
N = int(input())
L = list(map(int,input().split()))
Y,M = 0,0
for i in L:
Y += (i // 30 + 1) * 10 # 30원 기준으로 청구되기에 (30으로 나눈 몫+1) * 10원 청구
M += (i // 60 + 1) * 15 # 60원 기준으로 청구되기에 (60으로 나눈 몫+1) * 15원 청구
if Y == M:
print('Y M', Y)
elif Y > M:
print('M', M)
else:
print('Y', Y)
10초, 15초 등 각 요금제에 정해진 초수에 미달하는 경우에도 10원, 15원이 청구되기에 몫에 1을 더해줍니다.
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.