진박사의 일상

[이코테] Greedy 문제 - 1. 모험가 길드 본문

프로그래밍/코딩테스트 공부

[이코테] Greedy 문제 - 1. 모험가 길드

진박사. 2021. 9. 5. 15:52

문제 : 공포도가 N인 모험가는 N명 이상의 모험가 그룹에 참여해야 모험을 떠날 수 있다. N명의 공포도가 주어졌을 때 최대로 떠날 수 있는 모험가 그룹의 수를 구하시오.

 

입력조건 : 첫째줄은 N(1~100000), 둘째줄은 공포수(자연수) 공백 구분

 

n = int(input())
fear = list(map(int, input().split()))

g_num = 0

fear.sort()
fear = fear[::-1]

group = []
while fear:
    if not group: #그룹이 비어있으면
        group.append(fear.pop())
    if max(group) > len(group):  # 최대 공포수가 그룹 인원수보다 클 때
        group.append(fear.pop())
    else: #최대 공포수가 그룹 인원수보다 작거나 같다면
        g_num += 1 #그룹수 증가
        group = [] #그룹 초기화

print(g_num)

결과 : input 값을 random으로 넣어서 정답이랑 비교해봄. 맞는듯