1. 문제설명
2. 문제 조건
3. 문제해결 아이디어
- 오름차순 정렬 이후에 공포도가 가장 낮은 모험가부터 하나씩 확인한다.
- 공포도를 하나씩 확인하며 "현재 그룹에 포함된 모험가의 수"가 "현재 확인하고 있는 공포도보다 크거나 같다면 이를 그룹으로 설정"
4. 답안
#모험가의 수
n = int(input())
promulgate = list(map(int, input().split()))
answer = 0
people = 1
#올림차순 정렬
promulgate = sorted(promulgate)
for i in range(n):
if(promulgate[i] <= people): #공포도와 인원수가 같을 경우
answer += 1 #팀 결성
people = 1 #다시 초기화
else:
people += 1 #한명추가
print(answer)
4-1. 표준답안
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)
'CodingTest > 그리디 알고리즘' 카테고리의 다른 글
곱하기 혹은 더하기 (0) | 2022.07.05 |
---|---|
1이 될 때까지 반복적으로 수행 (0) | 2022.07.05 |
그리디 알고리즘 이론 (0) | 2022.07.04 |