////
Search
🗡️

모험가 길드

나의 풀이
오름차순 정렬 후, 뒤에서 부터 잘라서 그룹을 구성하였다.
만약에 그룹을 구성할 수 없다면, 해당 수는 버린다.
N = int(input()) heroes = sorted(list(map(int, input().split()))) count = 0 while len(heroes) > 0: last = heroes[-1] if len(heroes) < last: heroes.pop() else: heroes = heroes[:last * -1] count += 1 print(count)
Python
복사
강의 풀이
동일하게 오름차순으로 정렬하였지만, 앞에서 자르는 방법을 사용하셨다.
앞에서 자르면 작은 수가 먼저 사용되기 때문에, 그룹을 결성할 수 없는 숫자일 때 버리는 과정을 사용하지 않아도 된다.
왜냐하면, 특정 수에서 그룹 결성이 불가능하다면 해당 수의 다음 숫자는 같거나 큰 수 밖에 나오지 않기 때문무조건 그룹 결성이 불가능하기 때문이다.
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) # 총 그룹의 수 출력
Python
복사