이전에 작성했던걸 실수로 날렸다..
이 문제는 공포도를 오름차순으로 조정 후,
그룹을 만들기 위한 공포도 하고 인원수 하고 맞아지면 생성한 그룹수를 늘리면 된다.
낮은 공포도의 인원을 먼저 소모함으로써 (탐욕적!) 생성할 그룹수를 늘리는 방법이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | m = list(map(int, input().split())); n = len(m); m.sort(); groups = 0; person = 0; fear = 0; for i in m: if fear <= i: fear = i; person += 1; if person == fear: groups += 1; person = 0; print(groups); | cs |
본인은 이 문제의 해답을 이해하기 위해 머릿속으로 임시 그룹을 하나 그렸다.
여기서는 groups의 갯수를 증가시키는걸로 코드화 시켰는데,
요는 임시 그룹에 사람들을 일단 추가했다가. 조건에 맞으면 진짜 그룹으로 내보내는 것이다.
여기서 조건에 맞는다는건, 마지막에 추가된 인원의 공포도 만큼 인원이 들어가 있는가 이다.

덧글