반응형
풀이
입력받은 추의 무게들을 오름차순으로 정렬한 후 차례대로 더해가면서 현재까지 추의 무게들의 합과 다음 추의 무게를 비교하면 된다. 만약 다음 추의 무게가 현재까지 추의 무게들의 합보다 더 크다면 현재까지 추의 무게들의 합 + 1이 답이 된다.
문제를 풀 수 있는 방법을 찾지 못해 풀이를 보고 해결했는데 말로 하는 설명만 봤을 때는 이해가 안갔는데 수직선을 그려서 설명해 주신 분의 풀이를 보고 이해할 수 있었다. 아래 링크를 참고해보자~
코드
if __name__ == '__main__':
N = int(input()) # 저울추의 개수
numbers = list(map(int, input().split())) # 추들의 무게
numbers.sort()
weights = 1 # 추의 무게들의 합. 1로 시작
for i in range(N):
# 다음 추가 현재까지 추들의 무게의 합보다 크다면 weights가 주어진 추들로 측정할 수 없는 최소 무게가 된다.
if weights < numbers[i]:
break
weights += numbers[i]
print(weights)
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
1700. 멀티탭 스케줄링 (Python) (0) | 2022.03.07 |
---|---|
11000. 강의실 배정 (Python) (0) | 2022.03.07 |
1339. 단어 수학 (Python) (0) | 2022.03.04 |
1022. 소용돌이 예쁘게 출력하기 (Python) (0) | 2022.03.01 |
1202. 보석 도둑 (Python) (0) | 2022.02.28 |
댓글