티스토리 뷰
문제
https://www.acmicpc.net/problem/2437
알고리즘
Greedy
풀이
$N$개의 저울이 주어졌을 때, 잴 수 없는 무게의 최솟값을 구하는 문제입니다.
기존에 잴 수 있는 구간이 [0,R] 일 때, 새로운 추 A가 새로이 등장하면 새롭게 잴 수 있는 구간은 [A,A+R] 일 것입니다. 만일 R+1>=A 라면 이 구간은 [0,A+R]로 통합되어 잴 수 있는 구간이 새로이 갱신되겠지만 아니라면 답은 R+1입니다.
즉, 추의 무게를 정렬한 후 R과 추가할 추 A의 무게를 계속해서 비교해주면 됩니다. R은 잴 수 있는 무게의 최댓값이므로 지금까지의 추의 무게의 총합입니다.
코드
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < n; ++i)
#define REP(i, n) for (int i = 1; i <= n; ++i)
using namespace std;
int main() {
#ifndef ONLINE_JUDGE
freopen("in", "r", stdin);
freopen("out", "w", stdout);
#endif
cin.tie(NULL);
cout.tie(NULL);
ios::sync_with_stdio(false);
int N;
cin >> N;
vector<int> vt(N);
rep(i, N) cin >> vt[i];
sort(vt.begin(), vt.end());
int sum = 0;
bool temp = false;
rep(i, N) {
if (sum + 1 < vt[i]) {
temp = true;
cout << sum + 1;
break;
}
sum += vt[i];
}
if (!temp) cout << sum + 1;
return 0;
}
'Algorithm' 카테고리의 다른 글
[백준 1662] 압축 (0) | 2021.06.30 |
---|---|
[백준 5214] 환승 (0) | 2021.06.25 |
[백준 5917] Roadblock (0) | 2021.05.31 |
[백준 17612] 쇼핑몰 (0) | 2021.05.28 |
[백준 10652] Piggy Back (0) | 2021.05.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이분매칭
- Fenwick
- DP
- kmp
- 좌표압축
- implementation
- 정렬
- 트라이
- Suffix Array
- 이분탐색
- SCC
- Oracle
- Segment tree
- 2-SAT
- spring
- hld
- greedy
- bfs
- 펜윅트리
- 세그먼트트리
- 동적계획법
- dfs
- 스위핑
- union find
- sorting
- spring boot
- knapsack
- dijkstra
- sweeping
- string
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함