간단한(?) (내겐 간단하진 않았다..) 그리디 문제.
내 알고리즘을 간략히 설명하면, 가장 적은 것부터 쳐내기 위해 오름차순 정렬.
이후 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 합니다.
반응형
'알고리즘' 카테고리의 다른 글
[이것이 코딩테스트다 - 그리디] 문자열 뒤집기 (0) | 2024.03.28 |
---|---|
[이것이 코딩테스트다 - 그리디] 곱하기 혹은 더하기 (0) | 2024.03.28 |
[프로그래머스 고득점 Kit] (dfs/bfs) 게임 맵 최단거리 (0) | 2024.03.08 |
[프로그래머스 고득점 kit] (완전 탐색) - 피로도 (0) | 2024.03.07 |
[프로그래머스 고득점 Kit] (완전 탐색) 소수 찾기 (0) | 2024.03.06 |