Coding Test/이것이 코딩 테스트다
[이코테 Greedy] 모험가 길드
Lucian_Cho
2021. 1. 8. 21:01
# 문제
# 입력 예시
5
2 3 1 2 2
# 출력 예시
2
내 풀이
n = int(input())
guild = list(map(int, input().split()))
# 낮은 공포도 순으로 정렬
guild.sort()
result = 0 # 여행을 떠날 그룹의 수
i = 0 # 인덱스
# j를 하나씩 올리면서 인덱스를 이용해 그룹 숫자 카운트
for j in range(n):
# j번째 모험가의 공포도가 (j - i + 1)명의 모험가 수와 같을 때, 그룹을 하나 만듬
if guild[j] == j - i + 1:
result += 1 # 그룹의 수 카운트
i = j + 1 # i를 (j+1) 번째 모험가를 가리키도록 옮김
print(result)
지향할 답안
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) # 총 그룹의 수 출력
고려할 점
좀 더 로직이 깔끔하게 눈에 들어오게 짜면 좋겠다.