https://www.acmicpc.net/problem/1487
๋ฌธ์
์ธ์ค์ด๋ ์ค๋ ์ฐ๊ตฌ๊ธฐ๊ฐ ๋์ ์ ์ํ์ ๋ด๋์๋ค. ์ธ์ค์ด๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ ๋งํผ ์ด ์ํ์ ์ต๋ ์ด์ต์ ํ๋ ค๊ณ ํ๋ค.
์ธ์ค์ด๋ ์ด ์ํ์ ์ฌ๋ ค๊ณ ํ๋ ์ฌ๋๋ค์ด ์ด ๋ช ๋ช ์ด๋ ๋๋์ง ์์๋ดค๋ค. ๋ฌด๋ ค N๋ช ์ด๋ ์ด ์ํฅ์ ๋ณด์๋ค. ๊ฐ๊ฐ์ ์ฌ๋์ ์๊ธฐ๊ฐ ์ง๋ถํ ์๊ฐ์ด ์๋ ์ต๋ ํ๋๊ฐ ์๋ค. ๋ฐ๋ผ์, ์ด๋ค ์ฌ๋์ด 20์๊น์ง ์ง๋ถํ ์๊ฐ์ด ์๋๋ฐ, ์ธ์ค์ด๊ฐ ๊ฐ๊ฒฉ์ 30์์ผ๋ก ์ฑ ์ ํ๋ฉด ์ด ์ฌ๋์ ์ ๋ ์ ์ด ๊ฒ์ด๊ณ , 15์์ผ๋ก ์ฑ ์ ํ๋ฉด ์ด ์ฌ๋์ ์ด ์ํ์ 15์์ ์ด ๊ฒ์ด๋ค. (๋จ, ์ธ์ค์ด๊ฐ ์ ํ์๋ ์๋ค.)
๊ทธ๋ฆฌ๊ณ , ์ธ์ค์ด๋ ๊ฐ๊ฐ์ ์ฌ๋์๊ฒ ๋ฐฐ๋ฌํ๋ ๋น์ฉ์ด ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋ ์ง ์๊ณ ์๋ค.
N๋ช ์ ์ฌ๋๊ณผ, ๊ฐ๊ฐ์ ์ฌ๋์ด ์ง๋ถํ ์ฉ์๊ฐ ์๋ ์ต๋ ๊ธ์ก๊ณผ ๋ฐฐ์ก๋น๊ฐ ์ฃผ์ด์ก์ ๋, ์ธ์ค์ด์ ์ด์ต์ ์ต๋๋ก ํ๋ ๊ฐ๊ฒฉ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ธ์ค์ด์ ๋ฌผ๊ฑด์ ๊ตฌ๋งคํ ์ํฅ์ด ์๋ ์ฌ๋์ ์ N์ด ์ฃผ์ด์ง๋ค. ์ด ๊ฐ์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋์งธ ์ค๋ถํฐ ๊ฐ ์ฌ๋์ด ์ง๋ถํ ์ต๋ ๊ธ์ก๊ณผ ๋ฐฐ์ก๋น๊ฐ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ๋ ๊ฐ์ ๋ชจ๋ \(10^6\)๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ด ์๋ ์ ์์ด๊ณ , ๋ฐฐ์ก๋น๋ 0์ด ๋ ์๋ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต๋ ์ด์ต์ ๋ง๋ค์ด์ฃผ๋ ๊ฐ๊ฒฉ์ ์ถ๋ ฅํ๋ค. ์ด์ต์ด ์ต๋์ธ ๊ฐ๊ฒฉ์ด ์ฌ๋ฌ๊ฐ๋ผ๋ฉด, ๊ฐ์ฅ ๋ฎ์ ๊ฐ๊ฒฉ์ ์ถ๋ ฅํ๋ค. ๋, ์ด๋ค ๊ฐ๊ฒฉ์ผ๋ก ํ์๋ ์ด์ต์ ๋จ๊ธธ ์ ์๋ค๋ฉด 0์ ์ถ๋ ฅํ๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main_BOJ_1487_๋ฌผ๊ฑดํ๊ธฐ {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer;
int N = Integer.parseInt(br.readLine());
int[][] costs = new int[N][2];
for(int i = 0 ; i < N; i++){
stringTokenizer = new StringTokenizer(br.readLine());
costs[i][0] = Integer.parseInt(stringTokenizer.nextToken());
costs[i][1] = Integer.parseInt(stringTokenizer.nextToken());
}
Arrays.sort(costs, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
// TODO Auto-generated method stub
int result = o1[0] - o2[0];
if(result == 0)
result = o1[1] - o2[1];
return result;
}
});
int maxPrice = 0;
int maxTotalPrice = 0;
for(int i = 0 ; i < N ; i++){
int total = 0;
for(int j = i; j < N ;j++){
int benefit = costs[i][0] - costs[j][1];
if(benefit > 0)
total += benefit;
}
if(maxTotalPrice < total){
maxTotalPrice = total;
maxPrice = costs[i][0];
}
}
System.out.println(maxPrice);
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 21610 ] ๋ง๋ฒ์ฌ ์์ด์ ๋น๋ฐ๋ฆฌ๊ธฐ ( JAVA ) (0) | 2022.01.30 |
---|---|
[ ๋ฐฑ์ค / BOJ 16234 ] ์ธ๊ตฌ ์ด๋ ( JAVA ) (0) | 2022.01.30 |
[ ๋ฐฑ์ค / BOJ 2583 ] ์์ญ ๊ตฌํ๊ธฐ ( JAVA / ์๋ฐ ) (0) | 2021.11.24 |
[ ๋ฐฑ์ค / BOJ 1068 ] ํธ๋ฆฌ ( ์๋ฐ / JAVA ) (0) | 2021.11.24 |
[ ๋ฐฑ์ค / BOJ 1092 ] ๋ฐฐ ( ์๋ฐ / JAVA ) (0) | 2021.11.24 |