모험가 길드 - Greedy Algorithm

n = int(input())
fearChart = list(map(int, input().split()))
count=0

for i in range(n):
maxElement = max(fearChart)
fearChart.remove(maxElement)
temp = 0
elementsCount = 1
index = 0
while elementsCount != maxElement:
maxElement2 = max(fearChart)
fearChart.remove(maxElement2)
elementsCount += 1

count += 1
if not fearChart:
break
print(count)
문제 요약 : N명을 입력 받고 각 사람들의 공포도를 입력받는다. 공포도가 X인 모험가는 반드시 X명 이상
으로 구성한 모험가 그룹에 참가 해야 여행을 떠날 수 있다. 최대 그룹의 개수를 출력해라

접근 방식 : 각 사람들의 공포도를 리스트로 입력 받고 리스트에서 최대 공포도를 찾는다. 그 최대 공포도
개수 만큼 배열에서 큰 값부터 삭제한다. 그룹의 개수가 최대 값이 되기 위해서는 공포도가 높은 수 부터
삭제해야 낮은 공포도들만 남아 개수를 늘리기 적합하기 때문이다.

새로 알게된 점 : max메소드에 리스트를 매개변수로 넘기면 배열에서 최대값을 가져온다.  

댓글