백준

[백준]1267(python)-핸드폰 요금

chyam_eun 2023. 8. 3. 09:54

https://www.acmicpc.net/problem/1267

 

1267번: 핸드폰 요금

동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

<문제>

동호는 새악대로 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으로 출력한다.

1차시도 실패

sum1 을 영식이요금제로 계산한 값,  sum2를 민식이 요금제로 계산한 값으로 두고 처음을 0으로 설정해두었다.

n을 input으로 받으며 바로 정수형으로 바꿔버린다. p라는 리스트를 생성하여 n의 개수만큼 받는다.

for문에 범위를 n으로 두고 p[a]%30으로 나머지가 0보다 크거나 60으로 나머지가 0보다 클때 

영식이는 30초마다 10원씩이니까 30초가 초과하면 최소10원을 부과한다.. 민식이는 60초에 15원씩 부과하므로

p[a]에서 몇초마다인지 나눈후에 1을 더해주고 각 원을 곱해준다. 

하지만 나는 30초와 60초가 지나도 더 부과된다는 사실을 모르고 따로 계산했다..

2차시도 성공

if문부분에 =이라는 부호만 추가해주었다.