반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

모험가 길드 본문

 

내 풀이

from collections import deque

n = int(input())
ary = list(map(int, input().split()))

ary.sort()
ary = deque(ary)

answer = 0

while ary:
    max = ary.pop() - 1

    while True:
        if ary:
            ary.popleft()
            max -= 1

            if max == 0:
                answer += 1
                break
        else:
            break

print(answer)

일단 각 인원들의 공포도를 입력 받고 오름차순으로 정렬한다. 그리고 answer에 완성된 팀의 수를 저장한다. 내가 푼 풀이로는 가장 큰 수를 max에 저장하고 그 인원이 들어왔으니 -1을 해서 저장한다. 그리고 공포도가 낮은 인원을 max가 0이 될 때 까지 삭제한다.

 

교재 풀이

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) # 총 그룹의 수 출력

교재에서는 공포도가 낮은 인원부터 count에 포함 시키면서 현재 모인 인원이 지금 인원의 공포도보다 이상이면 팀이 결성되는 방식으로 풀었다.

 

=> 교재 풀이가 더 깔끔하다,,,

728x90
반응형

'코딩 테스트(Python) > 이것이 취업을 위한 코딩 테스트다' 카테고리의 다른 글

18352 특정 거리의 도시 찾기  (1) 2022.07.21
18406 럭키 스트레이트  (0) 2022.07.19
커리큘럼  (0) 2022.07.17
1647 도시 분할 계획  (0) 2022.07.16
팀 결성  (0) 2022.07.11
Comments