’N명’의 모험가와, 각 모험가가 가진 ‘공포도’가 입력으로 주어진다.
공포도가 X인 모험가는 반드시 X명 이상으로 구성된 모험가 그룹에 속해야 한다. 이때 최대 몇 개의 모험가 그룹을 만들 수 있는가?
- 오름차순 정렬 후 작은 공포도부터 확인
- 현재 그룹에 포함된 모험가 수가, 현재 확인하고 있는 공포도보다 크거나 같다면, 이를 그룹으로 설정
- 이 방법을 이용하면, 공포도가 오름차순 정렬됐다는 점에서, 항상 최소한의 모험가 수만 포함해서 그룹을 결성하게 됨
n = int(input())
data = list(map(int, input().split()))
data.sort()
result = 0 # 총 그룹 수
count = 0 # 현재 그룹에 포함된 모험가 수
for i in data: # 공포도를 낮은 것부터 하나씩 확인
count += 1 # 현재 그룹에 해당 모험가를 포함시킴
if count >= i: # 현재 그룹의 모험가 수가 현재의 공포도 이상이면, 그룹 결성
result += 1 # 총 그룹의 수 증가시킴
count = 0 # 현재 그룹에 포함된 모험가의 수 초기화
print(result)
파이썬 튜터를 돌려 보면서, 들여쓰기를 잘못한 것을 인지하지 못했다. 들여쓰기 하나가 엄청난 실수가 된다는 사실...! 논리를 확실히 알기 위해 노력할 것!
파이썬 튜터는 너무 재밌당.