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에 포함 시키면서 현재 모인 인원이 지금 인원의 공포도보다 이상이면 팀이 결성되는 방식으로 풀었다.

 

=> 교재 풀이가 더 깔끔하다,,,

반응형