Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 1267번- '핸드폰 요금' (PYTHON 풀이) 본문
문제:


문제를 이해하는데는 어렵지 않았다.
설명 그대로 영식 요금제는 1초부터 29초까지 10원, 30초부터 59초까지 20원.. 이런식으로 요금이 들고,
민식 요금제는 1초부터 59초까지 15원, 60초부터 119초까지는 30원... 이런식으로 요금이 드니까 동호가 쓴 시간만큼을 기준으로 두 요금제를 비교해서 싼 요금제를 출력하라는 문제이다.
풀이:
n = int(input())
a = list(map(int,input().split()))
result1=[]
result2=[]
for j in a:
result1.append((j // 30 + 1) * 10)
result2.append((j // 60 + 1) * 15)
if sum(result1) > sum(result2):
print(f"M {sum(result2)}")
elif sum(result1) < sum(result2):
print(f"Y {sum(result1)}")
else:
print(f"Y M {sum(result1)}")
풀이는 다음과 같다.
쉬운 편인데도 좀 오래 걸렸다. 처음에는 시작부터 두 요금제를 비교하려고 하지 않고 비용이 추가되는 구간에 대해서 어떻게 코딩을 해야하나 고민에 빠져버리는 바람에 딴 길로 샜는데, 그렇게 되면 어려울 것 같아 다시 규칙을 찾으려고 애썼던 것 같다.
그 결과, 두 요금제를 동시에 계산해서 두 개의 리스트에 각각 넣고, 이에 대한 합계를 통해 비교하는 방향으로 풀이하였다.
그러기 위해서는 30과 60을 기준으로 몫을 구해서, 1초라도 사용하면 요금이 드니 1을 추가하고 이 값에 각각 10, 15를 곱해서 금액을 계산하면 된다.
그 후 각 리스트 값을 더해 비교해서 형식대로 출력하면 된다!
'CODING 💻' 카테고리의 다른 글
| 백준 25305번- '커트라인' (PYTHON 풀이) (0) | 2025.09.28 |
|---|---|
| 백준 1267번- '대표값2' (PYTHON 풀이) (0) | 2025.09.27 |
| 백준 2750번- '수 정렬하기' (PYTHON 풀이) (0) | 2025.09.25 |
| 백준 10699번- '오늘 날짜' (PYTHON 풀이) (0) | 2025.09.24 |
| 백준 24267번- '알고리즘 수업 - 알고리즘의 수행 시간 6' (PYTHON 풀이) (0) | 2025.09.23 |
