[이코테] 모험가 길드

조유솔·2024년 7월 16일
0
post-thumbnail

나의 풀이

n = int(input()) # n = 모험가 인원수
adv_list = sorted(list(map(int,input().split())))[::-1]
cnt= 0 

while True:
    cnt += 1
    max = adv_list[0]  # 최대값 구하기 
    pop_list = adv_list[0:max] # 최대값-1만큼 더 고르기 
    adv_list = adv_list[max:] # 아직 안뽑힌 모험가만 남도록 업데이트
    if len(adv_list)==0:
        break 

print(cnt)




어떻게 풀었나

공포도가 가장 높은 모험가부터 그룹화하기
공포도가 높은 애들은 높은 애들끼리, 낮은 애들은 낮은 애들끼리 묶기




시행착오

  1. 문제를 잘못 이해했다. 앞으로는 코드를 짜기 전, 테스트 케이스의 입출력 결과를 직접 대입해보며 문제를 제대로 읽었는지 확인해해야겠다.
  2. 풀이 아이디어 자체는 굉장히 간단하다. 공포도가 높은 모험가부터 얘네끼리 모아서 그룹을 순차적으로 구성하는 것. 그런데 이 아이디어가 생각보다 빠르게 떠오르지 않아 처음에 너무 답답했다. 분명 직관적인, 간단한 답이 있을 것 같은데 자꾸 안떠올라서 -.- 그럴 때에는 무작정 문제를 째려보고만 있을 게 아니라, '기준' 을 정해야겠다 → 아무래도 Greedy Algorithm은 '기준'에 따라 '순차적으로' 처리하는 알고리즘이니까.

0개의 댓글

관련 채용 정보