국문과 유목민

[그리드] 모험가 길드 본문

알고리즘_코딩테스트/이것이 코딩테스트다

[그리드] 모험가 길드

논곰 2021. 12. 12. 00:41
"이것이 코딩테스트다(나동빈 저)"에서 나온 문제에 대한 코드를 다루고 있습니다.
문제에 대한 구체적인 설명과 조건 등은 책을 참고해주시기 바랍니다.

소요시간: 12분 30초

1. 문제 설명

- 모험가 집단에서 공포도에 따라 그룹을 나눌 때 최소로 나눌 수 있는 그룹을 정한다. 

2. 접근 방식

- 여행을 떠날 수 있는 최대 공포자의 수 공포도가 최대인 경우를 정하고(내림차순)으로 그 밑으로 공포도가 같거나 최대인 애들을 넣었었다.

- 주어진 테스트 코스는 패스했지만, 후에 해답을 보니 나와는 다르게 '오름차순'으로 했다. 

3. 코드

- 초기 코드_(내림차순 구현)

from collections import deque
def make_group(n, input_ls):
    q = deque(sorted(input_ls, reverse=True))
    answer = 0
    while q:
        max_adventure = q.popleft()
        answer +=1
        for i in range(max_adventure):
            if q:
                q.popleft()    
    return answer

- 해답 코드_(오름차순구현)

def make_group(n, input_ls):
    group = 0
    count = 0
    for i in input_ls:
        count+=1 # 현재 그룹에 모험가 포함시키기
        if count >=1: #현재 그룹에 포함된 모험가의 수로 현재의 공포도 수용가능하다면 그룹 결성
            group +=1
            count = 0
    print(group)

4. 코멘트

- 내가 처음에 생각했을 때에는 최대한 많은 모험가를 보내는 것으로 생각했는데, 해답을 보고 다시 문제를 읽어보니 최대한 많은 그룹을 보내는 문제였다. 그래서 코드를 다시 짰다.

Comments