반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 1267번 핸드폰 요금 파이썬(Python)

1) 문제번호 : 1267번

 

2) 문제 출처

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

 

1267번: 핸드폰 요금

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

www.acmicpc.net

 

2. 문제

동호는 새악대로 T 통신사의 새 핸드폰 옴머나를 샀다. 새악대로 T 통신사는 동호에게 다음 두 가지 요금제 중 하나를 선택하라고 했다.

  1. 영식 요금제
  2. 민식 요금제

영식 요금제는 30초마다 10원씩 청구된다. 이 말은 만약 29초 또는 그 보다 적은 시간 통화를 했으면 10원이 청구된다. 만약 30초부터 59초 사이로 통화를 했으면 20원이 청구된다.

민식 요금제는 60초마다 15원씩 청구된다. 이 말은 만약 59초 또는 그 보다 적은 시간 통화를 했으면 15원이 청구된다. 만약 60초부터 119초 사이로 통화를 했으면 30원이 청구된다.

동호가 저번 달에 새악대로 T 통신사를 이용할 때 통화 시간 목록이 주어지면 어느 요금제를 사용 하는 것이 저렴한지 출력하는 프로그램을 작성하시오.

 

 

3. 제약사항

 

4. 입력

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

 

5. 출력

첫째 줄에 싼 요금제의 이름을 출력한다. 그 후에 공백을 사이에 두고 요금이 몇 원 나오는지 출력한다. 만약 두 요금제의 요금이 모두 같으면 영식을 먼저 쓰고 민식을 그 다음에 쓴다.

영식은 Y로, 민식은 M으로 출력한다.

 

 

6. 풀이

- 영식이는 30초, 민식이는 60초를 기준으로 요금을 부여한다.

- 즉, 영식이는 30초를 통화했을 때, 20원.(0~29초 10원, 30초 되자마자 10원 부여)

- 민식이는 60초를 통화했을 때, 30원.(0~59초 15원 60초 되자마자 15원 부여)

- 그 외에는, 무조건 초과를 하기 때문에 나눈 몫에 각각 10원과 15원을 더하면 된다.

 

7. 소스 코드

import sys
input=sys.stdin.readline

N = int(input()) # 통화의 개수
Y = 0 # 영식
M = 0 # 민식

temp = 0
num = []
num = list(map(int, input().split()))

for i in range(N) :
    #영식 계산
    if num[i] % 30 == 0 :
        Y += (10 * (num[i]//30) + 10)

    else :
        Y += (10 * (num[i]//30) + 10)

    #민식 계산
    if num[i] % 60 == 0 :
        M += (15 * (num[i]//60) + 15)

    else :
        M += (15 * (num[i]//60) + 15)

# 영식이 요금이 더 크면 민식이 출력
if Y > M :
    print("M", M)

# 민식이 요금이 더 크면 영식이 출력
elif M > Y :
    print("Y", Y)

# 둘다 같으면 영식 민식 요금 출력
elif M == Y :
    print("Y", "M", Y)

 


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기