[Algorithm] ๐Ÿค๋ฐฑ์ค€ 1931 ํšŒ์˜์‹ค ๋ฐฐ์ •

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

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
32/119

0. ๋ฌธ์ œ

ํ•œ ๊ฐœ์˜ ํšŒ์˜์‹ค์ด ์žˆ๋Š”๋ฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” N๊ฐœ์˜ ํšŒ์˜์— ๋Œ€ํ•˜์—ฌ ํšŒ์˜์‹ค ์‚ฌ์šฉํ‘œ๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ๊ฐ ํšŒ์˜ I์— ๋Œ€ํ•ด ์‹œ์ž‘์‹œ๊ฐ„๊ณผ ๋๋‚˜๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ ธ ์žˆ๊ณ , ๊ฐ ํšŒ์˜๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ํ•˜๋ฉด์„œ ํšŒ์˜์‹ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํšŒ์˜์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ์•„๋ณด์ž. ๋‹จ, ํšŒ์˜๋Š” ํ•œ๋ฒˆ ์‹œ์ž‘ํ•˜๋ฉด ์ค‘๊ฐ„์— ์ค‘๋‹จ๋  ์ˆ˜ ์—†์œผ๋ฉฐ ํ•œ ํšŒ์˜๊ฐ€ ๋๋‚˜๋Š” ๊ฒƒ๊ณผ ๋™์‹œ์— ๋‹ค์Œ ํšŒ์˜๊ฐ€ ์‹œ์ž‘๋  ์ˆ˜ ์žˆ๋‹ค. ํšŒ์˜์˜ ์‹œ์ž‘์‹œ๊ฐ„๊ณผ ๋๋‚˜๋Š” ์‹œ๊ฐ„์ด ๊ฐ™์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ์‹œ์ž‘ํ•˜์ž๋งˆ์ž ๋๋‚˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— ํšŒ์˜์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N+1 ์ค„๊นŒ์ง€ ๊ฐ ํšŒ์˜์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ ์ด๊ฒƒ์€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ํšŒ์˜์˜ ์‹œ์ž‘์‹œ๊ฐ„๊ณผ ๋๋‚˜๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง„๋‹ค. ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ๋๋‚˜๋Š” ์‹œ๊ฐ„์€ 231-1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜ ๋˜๋Š” 0์ด๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ์ตœ๋Œ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํšŒ์˜์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


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

1) ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด์„œ, ์ข…๋ฃŒ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒƒ์„ ์„ ํƒ
2) end๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
3) start ์‹œ๊ฐ„์ด ์ด์ „์˜ end๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด end์— ์ง€๊ธˆ end๋ฅผ ๋„ฃ๊ธฐ

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

1) end๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

Arrays.sort(arr, new Comparator<int []>() {
			@Override
			public int compare(int[] a, int[] b) {
				if(a[1] == b[1])
					return a[0]-b[0];
				else
					return a[1]-b[1];
			}
	});

2) start ์‹œ๊ฐ„์ด ์ด์ „์˜ end๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด end์— ์ง€๊ธˆ end๋ฅผ ๋„ฃ๊ธฐ

for(int i=0; i<n; i++) {
			if(arr[i][0] >= end) {
				end = arr[i][1];
				count++;
			}
}

3. ์ฝ”๋“œ

import java.io.*;
import java.util.*;
public class Greedy_4 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		int arr[][] = new int[n][2];
		
		for(int i=0; i<n; i++) {
			String s[] = br.readLine().split(" ");
			arr[i][0] = Integer.parseInt(s[0]);
			arr[i][1] = Integer.parseInt(s[1]);
		}
		
		Arrays.sort(arr, new Comparator<int []>() {
			@Override
			public int compare(int[] a, int[] b) {
				if(a[1] == b[1])
					return a[0]-b[0];
				else
					return a[1]-b[1];
			}
		});
		
		int count = 0;
		int end = -1;
		
		for(int i=0; i<n; i++) {
			if(arr[i][0] >= end) {
				end = arr[i][1];
				count++;
			}
		}
		
		System.out.println(count);
	}

}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณต~

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

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด