https://www.acmicpc.net/problem/2785
n = int(input())
chain = list(map(int, input().split()))
chain.sort()
cnt = 1
x = 0
while True:
chain[x] -= 1
cnt += 1
if chain[x] == 0:
x += 1
if cnt + x >= n:
break
print(cnt - 1)
풀이를 정리하자면
chain
리스트를 오름차순 정렬 해 준다cnt
와 인덱스 번호인 x
를 초기화[cnt를 1로 초기화한 이유는 체인 한개당 두개의 체인을 연결할 수 있기때문]
cnt += 1
x += 1
n
보다 크거나 같으면 break
!!cnt = 1
로 했기 때문에 cnt - 1
의외로 고려해야할 부분이 많아서 생각하는데 오래걸린 문제이다.