728x90
난이도 : 골드2
풀이일 : 2404103
https://www.acmicpc.net/problem/2437
문제 캡쳐
아이디어
- 무게추의 무게만큼, 저울로 잴 수 있는 무게의 수가 늘어난다.
- 최초 무게 추 1
- +1 : 1, 2
- +2 : 1, 2, 3, 4
- +3 : 1, 2, 3, 4, 5, 6, 7
- +5 : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
- num + 무게추 무게를 반복하다가, num < weight 순간 찾기
전체 풀이코드
import sys
N = int(sys.stdin.readline())
weights = list(map(int, sys.stdin.readline().split()))
weights.sort()
num = 1 # 만들 수 없는 최소 숫자 초기 설정
# 모든 무게추의 무게를 더하며 num < weight 찾기
for weight in weights:
if num < weight:
break
# 만들 수 있는 무게 정보 재할당
num += weight
print(num)
- weights : 무게추들의 정보를 저장하는 배열
- weights.sort : 만들 수 없는 무게가 현재 무게보다 작아지는 순간을 찾기 위해, 각 무게추의 무게를 더하는 로직 전에 정렬해준다.
- num = 1 : 가지고 있는 무게추로 만들 수 없는 최소 무게는 1부터 시작한다.
- for 반복문 : 모든 무게추들의 무게에 대해 num과 weight를 비교하고, 현재 만들 수 있는 숫자보다 더 큰 무게가 나타나는 순간, 반복문을 종료한다.
- 종료되지 않았다면, num에 현재 무게추의 무게를 합산한다.
느낀점
- 간단한 문제였는데 처음에는 무슨 boolean 배열을 만들려고 시도하다가 이상해서 다시 생각하고 풀었다. 이런 유형의 문제들도 로직을 생각해내지 못해서 그런지 좀 어렵게 느껴진다.
'알고리즘 > 🥇 골드' 카테고리의 다른 글
백준 13023 ABCDE 파이썬 풀이, 반례 (0) | 2024.04.15 |
---|---|
백준 11000 강의실 배정 파이썬 풀이 (0) | 2024.04.12 |
백준 1881 공 바꾸기 파이썬 풀이 (0) | 2024.04.08 |
백준 1700 멀티탭 스케줄링 파이썬 풀이, 반례 (1) | 2024.04.07 |
백준 2294 동전 2 파이썬 풀이 (0) | 2024.04.06 |