💻 입력 조건

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

💻 출력 조건

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

💻 입력 예시 1

5
2 3 1 2 2

💻 출력 예시 2

2

📖 문제 해결

입력 받은 모험가의 공포도 값 리스트를 sort() 함수로 정렬한 후 공포도가 작은 사람부터 하나 씩 그룹에 넣어가며, 그룹이 형성 조건(공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있음)에 위배되지 않으면 그룹으로 형성하도록 코드를 작성하였습니다.

구체적으로 설명하자면, append()함수를 이용하여 group_list에 모험가를 넣을 때마다 max()함수를 이용하여 공포도의 최대치를 항상 확인하면서 조건을 따져볼 수 있도록 하였습니다.

N = int(input())
input_list = list(map(int,input().split()))

input_list.sort()

group_list = []
group_count = 0

while len(input_list) > 0:

	# group_list에 공포도가 가장 작은 모험가 추가
    group_list.append(input_list.pop(0))
    
    # 조건을 성립하면 그룹으로 인정하고, group_count += 1
    if len(group_list) == max(group_list):
        group_count += 1
        group_list = []
        
print(group_count)
profile
AI를 공부하고 있는 학생입니다:)

0개의 댓글