문제

모험가 길드에서는 N명의 모험가를 대상으로 '공포도'를 측정했다. 길드장은 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했다. 최대 몇 개의 모험가 그룹을 만들 수 있을까?

입력 조건

  • 첫째 줄에 모험가의 수 N이 주어진다.(1 <= N <= 100000)
  • 둘째 줄에 각 모험가의 공포도 값을 N 이하의 자연수로 주어지며, 각 자연수는 공백으로 구분한다.

출력 조건

  • 여행을 떠날 수 있는 그룹 수의 최댓값을 출력한다.

Test Case

// 입력 예시
5
2 3 1 2 2

// 출력 예시
2

접근

  • 공포도를 정렬해둔 뒤 순차적으로 꺼내서 판별한다.
  • 그룹 인원을 따로 카운팅을 해두고, 이를 공포도와 비교해야 한다.

내 코드

import sys
n = int(sys.stdin.readLine().rstrip())
worried = list(map(int, sys.stdin.readline().split()))
worried.sort()

count, answer = 0, 0
for i in worried:
    count += 1
    if count == i:
        answer += 1
        count = 0
        
print(answer)
profile
Step by step goes a long way.

0개의 댓글