5_hyun
2022. 7. 18. 22:58
반응형
내 풀이
from collections import deque
n = int(input())
ary = list(map(int, input().split()))
ary.sort()
ary = deque(ary)
answer = 0
while ary:
max = ary.pop() - 1
while True:
if ary:
ary.popleft()
max -= 1
if max == 0:
answer += 1
break
else:
break
print(answer)
일단 각 인원들의 공포도를 입력 받고 오름차순으로 정렬한다. 그리고 answer에 완성된 팀의 수를 저장한다. 내가 푼 풀이로는 가장 큰 수를 max에 저장하고 그 인원이 들어왔으니 -1을 해서 저장한다. 그리고 공포도가 낮은 인원을 max가 0이 될 때 까지 삭제한다.
교재 풀이
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) # 총 그룹의 수 출력
교재에서는 공포도가 낮은 인원부터 count에 포함 시키면서 현재 모인 인원이 지금 인원의 공포도보다 이상이면 팀이 결성되는 방식으로 풀었다.
=> 교재 풀이가 더 깔끔하다,,,
반응형