olrlobt
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #2212 ์ผ์ ๋ณธ๋ฌธ
https://www.acmicpc.net/problem/2212
๐ ๊ณจ๋5 - #2212 ์ผ์


๐ ํ ์คํธ์ผ์ด์ค ์ถ๊ฐ ํํธ
6
2
1 6 3 3 4 3
= 3
9
3
1 3 5 5 8 9 10 11 16
= 7
โ๏ธ ํ์ด๋ฒ
๋ฌธ์ ๋ฅผ ๋ณด์๋ง์, ์ ๋ ฌ์ ํด ๋์์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ ํ, ์์๋ก ๋ช ๊ฐ์ ํ ์คํธ์ผ์ด์ค๋ฅผ ๋ง๋ค๋ฉด์ ํธ๋ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋ณด์๋ค.
๋จผ์ ์ฒซ๋ฒ์งธ ํ ์คํธ ์ผ์ด์ค
6
2
1 6 3 3 4 3
= 3
์ดํด๋ฅผ ์ํด ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์ ์ฌ์ง๊ณผ ๊ฐ๊ณ ,

์ง์ค๊ตญ 2๊ฐ๊ฐ ์์นํด์ผ ๋ ๊ณณ์ ๋ค์ ์ฌ์ง๊ณผ ๊ฐ๋ค.

์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ ์ ์๋ ๊ฒ์
A) ์ง์ค๊ตญ์ ์ผ์ ์์ ์์นํด์ผ ํ๋ค.
- ์ผ์ ์์ ์์ด์ผ ํ๋์ ์ผ์๋ผ๋ ๊ฐ์ง ์์ญ์ 0์ผ๋ก ๋ง๋ค ์ ์๋ค.
B) ์ง์ค๊ตญ์ ๊ฐ์๋๋ก ์ผ์ ๋ญํ ์ด๊ฐ ์๊ธด๋ค.
- ์ ๊ทธ๋ฆผ์ผ๋ก ์๋ฅผ ๋ค๋ฉด, [1, 3, 3, 3, 4] / [ 6] ๋ ๊ฐ์ ๋ญํ ์ด๋ก ๋๋์ด์ก๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ผ์๊ฐ ๋ญํ ์ด๋ก ๋๋์ด์ง๋ค๋ฉด, ์ผ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๋จผ ๊ณณ์ ๊ธฐ์ ์ผ๋ก ๋ญํ ์ด๋ฅผ ๋๋์ด์ผ ํ๋ค.
์ ํ ์คํธ ์ผ์ด์ค์ ์ผ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.

์ฌ๊ธฐ์ ์ง์ค๊ตญ์ด 2๊ฐ ์ค์น ๋๋ค๋ฉด, ์ผ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ๋จผ 4์ 6์ ๊ธฐ์ ์ผ๋ก ๋ญํ ์ด๊ฐ 2๊ฐ ์๊ธฐ๊ฒ ๋๊ณ ,
๋ ๋ญํ ์ด ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ ์ธก์ ํ ํ์๊ฐ ์์ด์ง๋ค.

์ดํ ๋๋จธ์ง ์ผ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ฉด, ์ง์ค๊ตญ์ด ๊ฐ์งํ ์์ญ์ด ๊ตฌํด์ง๋ค.
2 + 1 = 3
๋ง์ฐฌ๊ฐ์ง๋ก, ๋๋ฒ์งธ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์์ง๋ค.

์ธ ๊ฐ์ ์ง์ค๊ตญ ์ด๊ธฐ ๋๋ฌธ์, ์ธ ๊ฐ์ ๋ญํ ์ด๋ก ๋๋์ด์ง๊ณ , ๋ญํ ์ด ์ฌ์ด๊ฐ ๊ฐ์ฅ ๊ธด ๊ณณ์ ๊ธฐ์ ์ผ๋ก ๋ญํ ์ด๊ฐ ๋๋์ด์ง๋ค.
2 + 2 + 1 + 1 + 1 = 7
๊ฒฐ๊ตญ ํ์ด๋,
1. ์ผ์๋ฅผ ์ขํ ์์ผ๋ก ์ ๋ ฌํ๋ค.
2. ์ผ์์ ์ผ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค.
3. ์ผ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ํฐ ์์ผ๋ก ( ์ง์ค๊ตญ ์ - 1 ) ๋งํผ ์ง์ด๋ค.
( = ๋ญํ ์ด๋ฅผ ๋๋๊ณ ๋ญํ ์ด ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ง์ด๋ค.)
4. ๋จ์ ์ผ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ํฉํ๋ค.
๐๏ธ ํ์ด
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class baekjoon2212 {
static List<Integer> point = new ArrayList<>();
static List<Integer> distanceOfPoint = new ArrayList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
for (int testCase = 0; testCase < N; testCase++) {
point.add(sc.nextInt());
}
solve(K);
}
public static void solve(int K) {
Collections.sort(point);
setDistanceOfPoint();
calMinDistance(K);
}
private static void calMinDistance(int k) {
int sum = 0;
Collections.sort(distanceOfPoint);
for (int i=0; i< distanceOfPoint.size() - k + 1; i++){
sum += distanceOfPoint.get(i);
}
System.out.println(sum);
}
private static void setDistanceOfPoint() {
for (int i = 0; i < point.size() - 1; i++) {
distanceOfPoint.add(point.get(i + 1) - point.get(i));
}
}
}
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋3] #13904 ๊ณผ์ (1) | 2022.12.31 |
---|---|
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋4] #1715 ์นด๋ ์ ๋ ฌํ๊ธฐ (0) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋2] #2437 ์ ์ธ (1) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #12904 A์ B (0) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋4] #14500 ํ ํธ๋ก๋ฏธ๋ ธ (1) | 2022.12.30 |