백준(Python) 풀이/그리디 알고리즘

백준(Python) 1758번 알바생 강호 풀이

개발윗미 2021. 12. 18. 14:45

Python으로 구현한 1758번 알바생 강호 문제 풀이입니다.

 

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

 

1758번: 알바생 강호

첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같

www.acmicpc.net


n = int(input())
data = []
for _ in range(n) :
  data.append(int(input()))

data.sort(reverse=True)

result = 0
for i in range(n) :
  value = data[i] - ((i+1)-1)
  if value > 0 :
    result += value

print(result)

 

1. 입력받은 n개의 자연수를 입력받아 data 리스트에 추가한다.

 

2. 강호가 받을 수 있는 팁의 최댓값을 구해야하므로 내림차순으로 손님의 순서를 정렬한다.

 

3. 반복문을 수행하며, 문제에서 요구한 바와 같이 '원래 주려고 생각했던 돈 - (받은 등수 - 1)' 을 연산하여 value에 할당한다.

 

4. value 값이 음수인 경우 강호는 팁을 받을 수 없으므로, 양수일 경우에만 result에 누적한다.

 

5. 반복문이 종료되면 최종적으로 result 값을 출력한다.