[Algorithm] ๐Ÿ”ง๋ฐฑ์ค€ 1449 ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน

HaJingJingยท2021๋…„ 5์›” 10์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
36/119
post-thumbnail

0. ๋ฌธ์ œ

ํ•ญ์Šน์ด๋Š” ํ’ˆ์งˆ์ด ์‹ฌ๊ฐํ•˜๊ฒŒ ๋‚˜์œ ์ˆ˜๋„ ํŒŒ์ดํ”„ ํšŒ์‚ฌ์˜ ์ˆ˜๋ฆฌ๊ณต์ด๋‹ค. ํ•ญ์Šน์ด๋Š” ์„ธ์ค€ ์ง€ํ•˜์ฒ  ๊ณต์‚ฌ์—์„œ ๋ฌผ์ด ์ƒŒ๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ณ  ์ˆ˜๋ฆฌ๋ฅผ ํ•˜๋Ÿฌ ๊ฐ”๋‹ค.

ํŒŒ์ดํ”„์—์„œ ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์€ ์‹ ๊ธฐํ•˜๊ฒŒ๋„ ๊ฐ€์žฅ ์™ผ์ชฝ์—์„œ ์ •์ˆ˜๋งŒํผ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ๋งŒ ๋ฌผ์ด ์ƒŒ๋‹ค.

ํ•ญ์Šน์ด๋Š” ๊ธธ์ด๊ฐ€ L์ธ ํ…Œ์ดํ”„๋ฅผ ๋ฌดํ•œ๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ํ•ญ์Šน์ด๋Š” ํ…Œ์ดํ”„๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌผ์„ ๋ง‰์œผ๋ ค๊ณ  ํ•œ๋‹ค. ํ•ญ์Šน์ด๋Š” ํ•ญ์ƒ ๋ฌผ์„ ๋ง‰์„ ๋•Œ, ์ ์–ด๋„ ๊ทธ ์œ„์น˜์˜ ์ขŒ์šฐ 0.5๋งŒํผ ๊ฐ„๊ฒฉ์„ ์ค˜์•ผ ๋ฌผ์ด ๋‹ค์‹œ๋Š” ์•ˆ ์ƒŒ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ์œ„์น˜์™€, ํ•ญ์Šน์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ…Œ์ดํ”„์˜ ๊ธธ์ด L์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ํ•ญ์Šน์ด๊ฐ€ ํ•„์š”ํ•œ ํ…Œ์ดํ”„์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ํ…Œ์ดํ”„๋ฅผ ์ž๋ฅผ ์ˆ˜ ์—†๊ณ , ํ…Œ์ดํ”„๋ฅผ ๊ฒน์ณ์„œ ๋ถ™์ด๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ๊ฐœ์ˆ˜ N๊ณผ ํ…Œ์ดํ”„์˜ ๊ธธ์ด L์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N๊ณผ L์€ 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ์œ„์น˜๋Š” 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ํ•ญ์Šน์ด๊ฐ€ ํ•„์š”ํ•œ ํ…Œ์ดํ”„์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

1. ์•„์ด๋””์–ด

1) ํ•œํ…Œ์ดํ”„๋กœ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ ๊ตฌํ•˜๊ธฐ
2) ๊ทธ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ์ƒˆ๋กœ์šด ํ…Œ์ดํ”„ ํ•„์š”ํ•˜๊ณ , ๋„˜์–ด๊ฐ„ ๊ทธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ํ…Œ์ดํ”„๋ฅผ ๋ถ™์—ฌ์•ผํ•จ

2. ํ•ต์‹ฌ ํ’€์ด

1) ํ•œํ…Œ์ดํ”„๋กœ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ ๊ตฌํ•˜๊ธฐ

arr[idx] ~ arr[idx] + L - 1

2) ๊ทธ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ์ƒˆ๋กœ์šด ํ…Œ์ดํ”„ ํ•„์š”ํ•˜๊ณ , ๋„˜์–ด๊ฐ„ ๊ทธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ํ…Œ์ดํ”„๋ฅผ ๋ถ™์—ฌ์•ผํ•จ

for (int j = idx + 1; j < N; j++) {
			if (arr[idx] + L - 1 < arr[j]) {
				count++;
				idx = j;
			}
}

3. ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Greedy_8 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s[] = br.readLine().split(" ");

		int N = Integer.parseInt(s[0]);
		int L = Integer.parseInt(s[1]);
		int arr[] = new int[N];

		s = br.readLine().split(" ");

		for (int i = 0; i < N; i++)
			arr[i] = Integer.parseInt(s[i]);

		Arrays.sort(arr);
		
		int count = 1;
		int idx = 0;

		for (int j = idx + 1; j < N; j++) {
			if (arr[idx] + L - 1 < arr[j]) {
				count++;
				idx = j;
			}
		}

		System.out.println(count);
	}

}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณต~
(๋‘ ๋ฒˆ ์‹œ๋„์— ์„ฑ๊ณตํ–ˆ๋Š”๋ฐ.. ์ฒซ๋ฒˆ์งธ๊ฐ€ ์‹คํŒจํ–ˆ๋˜ ์ด์œ ๋Š” arrays.sort ์•ˆํ•ด์ค˜์„œ..ใ… )

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€