본문 바로가기

알고리즘

[이것이 코딩테스트다 - 그리디] 모험가 길드

간단한(?) (내겐 간단하진 않았다..) 그리디 문제.

 

내 알고리즘을 간략히 설명하면, 가장 적은 것부터 쳐내기 위해 오름차순 정렬.

 

이후 stack 역할을 하는 list에 개수가 차면 빼고, 뺄 떄마다 출력하고자 하는 결과값 1 증가.

 

반례가 없을까 생각해봤는데, 이미 오름차순으로 정렬이 된 상태라 문제 없을 것이라고 생각한다.

 

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

st = []
value = 0

for i in N:
	st.append(group[i])
    if len(st) >= group[i]:
    	value += 1
        st = []
        
print(value)

 

동빈나씨는 아래와 같은 방법을 제안한다.

 

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)

 

 

훨씬 깔끔하다...

lisfact 합니다.

반응형