olrlobt

[์ž๋ฐ”/๋ฐฑ์ค€ ๊ณจ๋“œ5] #2212 ์„ผ์„œ ๋ณธ๋ฌธ

Algorithm/๋ฐฑ์ค€

[์ž๋ฐ”/๋ฐฑ์ค€ ๊ณจ๋“œ5] #2212 ์„ผ์„œ

olrlobt 2022. 12. 31. 01:06

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));
        }
    }
}
Comments