꾸준히 합시다
백준 파이썬 1758번: 알바생 강호 본문
문제 유형: 그리디
# Solution 1 (210301 제출) - input() 사용
n = int(input())
tip_list = []
for i in range(n):
tip = int(input())
tip_list.append(tip)
tip_list.sort(reverse=True)
total = 0
for i in range(len(tip_list)):
real_tip = tip_list[i] - i + 1
if real_tip <= 0:
break
total += real_tip
print(total)
# Solution 2 (210302 제출) - sys 모듈 사용
import sys
n = int(input())
total_tip = []
count = 0
for _ in range(n):
total_tip.append(int(sys.stdin.readline().strip()))
total_tip.sort(reverse=True)
for i in range(n):
tip = total_tip[i] - i
if tip > 0:
count += tip
print(count)
두 가지 Solution 모두 접근법은 같다. 팁을 가장 많이 받기 위해서는 팁을 많이 줄 생각을 하고 있는 사람을 우선순위로 배치하면 된다. 두 가지 다 통과되었으나 sys 모듈을 사용하니 처리 시간이 현저히 낮아졌다. sys 모듈을 주피터 노트북에서 사용하면 계속 에러가 나기 때문에 터미널 내 파이썬 쉘에서 테스트하고 있다.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
백준 파이썬 10951번: A+B - 4 (0) | 2021.03.04 |
---|---|
백준 파이썬 10952번: A+B - 5 (0) | 2021.03.04 |
백준 파이썬 10989번: 수 정렬하기 3 (0) | 2021.03.03 |
백준 파이썬 11022번: A+B - 8 (0) | 2021.03.03 |
백준 파이썬 2902번: 음계 (0) | 2021.03.03 |
Comments