코딩테스트/👩‍💻 이코테

[이코테/greedy] 모험가 길드

병아리는삐약삐약 2023. 9. 4. 14:46

문제

- n명의 모험가는 각각 공포도를 가지고 있다
- 모험가 그룹을 구성하려고 할 때, 
- 공포도가 X인 모험가는 반드시 X명 이상으로 모험가 그룹을 구성해야 한다
- N명의 모험가에 대한 정보가 주어질 때, 만들 수 있는 그룹의 최댓값을 구하시오

 

정답

# ========== [1] ============
n = int(input()) 
pp = list(map(int,input().split())) 

pp.sort()
gcnt = 0
cnt = 0

# ========== [2] ============
for i in pp:
    cnt+=1
    if cnt>=i:
        gcnt+=1
        cnt=0

 

풀이

공포도를 기준으로 오름차순 정렬을 한 후, 

cnt 변수를 이용해서 모험가를 차례대로 포함시키고 ( +1 씩 증가시켜)

포함된 모험가의 수가 현재 확인하고 있는 공포도보다 크거나 같다면 ( cnt >= i )

그룹에 포함시킨다 (gcnt +=1) 

 

 

 

 

참조

이것이 취업을 위한 코딩테스트다(with. 파이썬)