[이코테] 모험가 길드 - 그리디

jckim22·2023년 6월 27일
0

[ALGORITHM] STUDY (PS)

목록 보기
5/86

1. 문제 설명

2. 문제 검토

공포도가 1인 모험가가 1인 그룹을 최대한 많이 결성하는 것이 이 문제에서 최적의 해를 구할 수 있는 방법이다
공포도가 높은 모험가는 마지막에 그룹에 포함되지 않게 해야하기 때문에 공포도가 제일 작은 모험가부터 그룹을 차례로 결성해야하기 때문에 그리디 기법을 사용하는 것이 옳다.

3. 풀이

n = int(input())
m = list(map(int,input().split()))

m = sorted(m)
cnt=0
result = 0

for x in range(len(m)):
    cnt+=1
    if cnt>=m[x]:
        result+=1
        cnt=0
        
print(result)
    
  1. 오름차순 정렬하여 차례로 반복한다.
  2. 반복시마다 현재 그룹에 +1을 해준다.
  3. 그룹의 모험가 수가 현재 모험가의 공포도 이상이라면 그룹을 결성한다.

4. 총평

그리디 기법이 용이한지 검토하는 부분이 중요한 문제이다.
공포도가 낮은 모험가부터 묶는게 좋은지 높은 모험가부터 묶는게 좋은지를 잘 판별해야 한다.

profile
개발/보안

0개의 댓글