
https://www.acmicpc.net/problem/2437

- 오늘의 학습 키워드
저울
- 풀이
import java.util.Arrays;
import java.util.Scanner;
public class Main11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] weights = new int[N];
for (int i = 0; i < N; i++) {
weights[i] = sc.nextInt();
}
System.out.println(solution(weights));
}
public static int solution(int[] weights) {
Arrays.sort(weights); // 추 오름차순 정렬
int target = 1;
for (int weight : weights) {
if (weight <= target) { // 현재 추가 target보다 작거나 같으면
target += weight; // 그 추로 target까지 확장 가능
} else { // 크면
break;
}
}
return target;
}
}
“이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값”이라는 말이 무슨 말인지 이해를 못했다.
GPT의 힘을 빌려 표현해 보자면 이렇다.
단계 | 현재 추 | 현재 target | 조건 (추 ≤ target?) | 설명 | 다음 target |
1 | 1 | 1 | ✅ | 1g로 1g 만들 수 있음 | target = 2 |
2 | 1 | 2 | ✅ | 1g 하나 더 있음 → 2g까지 가능 | target = 3 |
3 | 2 | 3 | ✅ | 2g 추가 → 3g까지 가능 | target = 5 |
4 | 3 | 5 | ✅ | 3g 추가 → 5g까지 가능 | target = 8 |
5 | 6 | 8 | ✅ | 6g 추가 → 8g까지 가능 | target = 14 |
6 | 7 | 14 | ✅ | 7g 추가 → 14g까지 가능 | target = 21 |
7 | 30 | 21 | ❌ | 30g은 지금까지 만든 범위보다 큼 → 멈춤! | ❗️정답: 21 |
1~20g까지는 만들 수 있지만 다음 추인 30은 너무 커서 그 사이 무게를 채울 수 없기 때문에 21이 답인거다.
즉, 추를 오름차순으로 정렬해서
지금까지 만들 수 있는 무게의 범위를 하나씩 늘려가다가
다음 추가 그 범위를 넘는 순간 그 target이 바로 측정 불가능한 최소 무게가 되는 것이다.
말이 어려워서 그렇지 이해하면 코드 자체는 단순하다…
- 오늘의 회고
문제 해석 능력이 떨어지는 것 같아서 고민이다 ㅠ-ㅠ....
'📝 끄적끄적 > 항해99 코테 스터디' 카테고리의 다른 글
99클럽 코테 스터디 12일차 TIL + 포도주 시식 (0) | 2025.04.15 |
---|---|
99클럽 코테 스터디 11일차 TIL + 과자 나눠주기 (0) | 2025.04.15 |
99클럽 코테 스터디 10일차 TIL + 병든 나이트 (0) | 2025.04.12 |
99클럽 코테 스터디 8일차 TIL + 한국이 그리울 땐 서버에 접속하지 (0) | 2025.04.10 |
99클럽 코테 스터디 7일차 TIL + 쇠막대기 (0) | 2025.04.09 |
99클럽 코테 스터디 6일차 TIL + 섬의 개수 (0) | 2025.04.08 |