๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ProgramSolve/Baekjoon

[BOJ] 2230๋ฒˆ - ์ˆ˜ ๊ณ ๋ฅด๊ธฐ (Java)

by SooooooooS 2024. 3. 22.
728x90

๐Ÿ› ๏ธ ๋ฌธ์ œ ๐Ÿ› ๏ธ


๐Ÿ—’๏ธ ์„ค๋ช… ๐Ÿ—’๏ธ

๋‘ ์ˆ˜๋ฅผ ๊ณจ๋ž์„ ๋•Œ(๊ฐ™์€ ์ˆ˜์ผ ์ˆ˜๋„ ์žˆ๋‹ค), ๊ทธ ์ฐจ์ด๊ฐ€ M ์ด์ƒ์ด๋ฉด์„œ ์ œ์ผ ์ž‘์€ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

→ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•  ๋‘ ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ˆ˜์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

 

๋‘ ์ˆ˜์˜ ์ฐจ์ด๋ฅผ ๊ตฌํ•ด์•ผํ•˜๋Š”๋ฐ ์ž…๋ ฅ๋œ ์ˆ˜์—ด์ด ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์›์†Œ๋ผ๋ฆฌ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 5๊ฐœ์˜ ์›์†Œ๊ฐ€ ์žˆ์œผ๋ฉด ํ•˜๋‚˜์˜ ์›์†Œ์™€ ๋‚˜๋จธ์ง€ 4๊ฐœ์˜ ์›์†Œ๋ฅผ ๋ชจ๋‘ ๋น„๊ตํ•ด๋ณด์•„์•ผ ํ•œ๋‹ค.

์ด ๋ฐ˜๋ณต๋˜๋Š” ํšŸ์ˆ˜๋Š” 4 X 3 X 2 X 1 = 24 ์ด๋‹ค.

4, 2, 1, 3 ์ฐจ์ด

ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ์—์„œ ์ˆ˜์—ด์˜ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 100,000๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๊ธฐ์— ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œฌ๋‹ค.

๋ชจ๋“  ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ

 

๊ทธ๋ ‡๋‹ค๋ฉด ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์•ผํ•œ๋‹ค.

 

๋จผ์ €, ์ˆ˜์—ด์„ ์ •๋ ฌํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋‘ ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ• ์ง€ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

end๊ฐ€ ์ฆ๊ฐ€ํ•  ๊ฒฝ์šฐ
start๊ฐ€ ์ฆ๊ฐ€ํ•  ๊ฒฝ์šฐ

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด start์™€ end์˜ ๋น„๊ตํ•  ๋‘ ์ˆ˜์˜ ์ธ๋ฑ์Šค๋ฅผ ์„ ์ •ํ•˜์—ฌ ๋น„๊ตํ•œ๋‹ค.

  • start๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‘ ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ๊ฐ์†Œํ•œ๋‹ค.
  • end๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‘ ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด์™€ ๊ฐ™์€ ์„ฑ์งˆ์„ ํ™œ์šฉํ•˜๋ฉด start ๋˜๋Š” end๊ฐ€ ๋ ์ธ๋ฑ์Šค์— ๋„๋‹ฌํ•˜๋Š” ์ˆœ๊ฐ„ ๋ฉˆ์ถ”๊ธฐ ๋•Œ๋ฌธ์— N+N๋ฒˆ ์ดํ•˜๋กœ ์ข…๋ฃŒ๋  ๊ฒƒ์ด๋‹ค.

์ฆ‰, ํˆฌ ํฌ์ธํ„ฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ ฌ์„ ํ–ˆ๊ณ  ๊ทธ ๊ฒฐ๊ณผ ๋ฐ˜๋ณตํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.


๐Ÿ€ ํ’€์ด ๐Ÿ€

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        int[] array = new int[n];
        for(int i = 0; i < n; i++) {
            array[i] = Integer.parseInt(br.readLine());
        }

        Arrays.sort(array); //์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
        int start = 0;
        int end = 0;
        int result = Integer.MAX_VALUE;
        while(end < n && start < n) {
            int c = array[end]-array[start];
            if(c >= m) { //์ฐจ์ด๊ฐ€ ํด๊ฒฝ์šฐ
                result = Math.min(result, c);
                start++;
            }
            else { //์ฐจ์ด๊ฐ€ ์ž‘์„ ๊ฒฝ์šฐ
                end++;
            }

        }

        bw.write(result+"");
        bw.flush();
        bw.close();
    }
}
728x90