문제
동호는 새악대로 T 통신사의 새 핸드폰 옴머나를 샀다. 새악대로 T 통신사는 동호에게 다음 두 가지 요금제 중 하나를 선택하라고 했다.
- 영식 요금제
- 민식 요금제
영식 요금제는 30초마다 10원씩 청구된다. 이 말은 만약 29초 또는 그 보다 적은 시간 통화를 했으면 10원이 청구된다. 만약 30초부터 59초 사이로 통화를 했으면 20원이 청구된다.
민식 요금제는 60초마다 15원씩 청구된다. 이 말은 만약 59초 또는 그 보다 적은 시간 통화를 했으면 15원이 청구된다. 만약 60초부터 119초 사이로 통화를 했으면 30원이 청구된다.
동호가 저번 달에 새악대로 T 통신사를 이용할 때 통화 시간 목록이 주어지면 어느 요금제를 사용 하는 것이 저렴한지 출력하는 프로그램을 작성하시오.
조건 및 입출력
1. 동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다.
2. 첫째 줄에 싼 요금제의 이름을 출력한다. 그 후에 공백을 사이에 두고 요금이 몇 원 나오는지 출력한다. 만약 두 요금제의 요금이 모두 같으면 영식을 먼저 쓰고 민식을 그 다음에 쓴다.
코드 (Python 3)
# 입력부
trys=int(input())
result_Y=[]; result_M=[];
# 처리부
call=list(map(int,input().split()));
for i in range(trys):
result_Y.append(10*(call[i]//30)+10);
result_M.append(15*(call[i]//60)+15);
# 출력부
if(sum(result_Y)>sum(result_M)):
print("M",sum(result_M));
elif(sum(result_Y)<sum(result_M)):
print("Y",sum(result_Y));
else:
print("Y","M",sum(result_Y));
풀이 과정
전화 횟수를 입력 받은 후, 매 전화마다 요금제에서 부과한 최초요금+최초요금을 초과한 금액을 더해주면 된다.
그 후 각 시행마다 부과된 전화요금을 리스트에 삽입한다.
요금제별로 부과된 금액의 합을 비교하여, 어느 요금제를 쓰는 것이 유리한지 판별한다.
| 코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요! + 더 좋은 풀이 방법이 있다면 알려줏주세요 :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 2474번 : 피보나치 수 (Python / 파이썬) (0) | 2023.02.13 |
|---|---|
| [백준] 11651번 : 좌표 정렬하기 2 (Python / 파이썬) (0) | 2023.02.12 |
| [백준] 10773번 : 제로 (Python / 파이썬) (0) | 2023.02.04 |
| [백준] 15726번 : 이칙연산 (Python / 파이썬) (0) | 2023.02.02 |
| [백준] 10815번 : 숫자 카드 (Python / 파이썬) (0) | 2023.02.02 |