๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 1911๋ฒˆ: ํ™๊ธธ ๋ณด์ˆ˜ํ•˜๊ธฐ(๊ทธ๋ฆฌ๋””)

by ์ฃผ๋ฐœ2 2020. 3. 12.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/1911

 

1911๋ฒˆ: ํ™๊ธธ ๋ณด์ˆ˜ํ•˜๊ธฐ

์–ด์ ฏ๋ฐค ๊ฒจ์šธ ์บ ํ”„ ์žฅ์†Œ์—์„œ ์›”๋“œ ๋ณธ์›๊นŒ์ง€ ์ด์–ด์ง€๋Š”, ํ™์œผ๋กœ ๋œ ๋น„๋ฐ€๊ธธ ์œ„์— ํญ์šฐ๊ฐ€ ๋‚ด๋ ค์„œ N (1 <= N <= 10,000) ๊ฐœ์˜ ๋ฌผ์›…๋ฉ์ด๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์›”๋“œํ•™์›์€ ๋ฌผ์›…๋ฉ์ด๋ฅผ ๋ฎ์„ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด L (L์€ ์–‘์˜ ์ •์ˆ˜) ์งœ๋ฆฌ ๋„๋นค์ง€๋“ค์„ ์ถฉ๋ถ„ํžˆ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ, ์ด๋“ค๋กœ ๋‹ค๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ฌผ์›…๋ฉ์ด๋“ค์„ ๋ชจ๋‘ ๋ฎ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ๋ฌผ์›…๋ฉ์ด๋“ค์˜ ์œ„์น˜์™€ ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ๋ฌผ์›…๋ฉ์ด๋“ค์„ ๋ฎ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋„๋นค์ง€๋“ค์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜์—ฌ๋ผ.

www.acmicpc.net

์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());
		int N = Integer.parseInt(st.nextToken());	// ์›…๋ฉ์ด ๊ฐœ์ˆ˜
		int L = Integer.parseInt(st.nextToken());	// ๋„๋นค์ง€ ๊ธธ์ด
		int[][] arr = new int[N][2];	// ๋ฌผ ์›…๋ฉ์ด ์‹œ์ž‘, ๋์œ„์น˜
		for(int i=0; i<N; i++) {
			st = new StringTokenizer(bf.readLine());
			arr[i][0] = Integer.parseInt(st.nextToken());
			arr[i][1] = Integer.parseInt(st.nextToken());
		}

		Arrays.sort(arr, new Comparator<int []>() {

			// ๋ฌผ์›…๋ฉ์ด์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ -> ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๋™์ผํ•˜๋ฉด ๋ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ
			@Override
			public int compare(int[] o1, int[] o2) {
				if(o1[0] == o2[0])
					return Integer.compare(o1[1], o2[1]);
				return Integer.compare(o1[0], o2[0]);
			}
		});
		
		int nulpan = 0;	// ํ•„์š”ํ•œ ๋„๋นค์ง€์˜ ๊ฐœ์ˆ˜
		int range = 0;	// ๋„๋นค์ง€๋ฅผ ๋ฌผ์›…๋ฎ์ด์— ๋ฎ์—ˆ์„๋•Œ, ๋ฎ์„ ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„
		for(int i=0; i<N; i++) {
			if(arr[i][0] > range)
				range = arr[i][0];
			if(arr[i][1] >= range) {
				while(arr[i][1] > range) {
					range += L;
					nulpan ++;
				}
			}
		}

		System.out.println(nulpan);
		bf.close();
	}

}

ํ’€์ด

์ผ๋‹จ ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ์—ฌ์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ํƒ์š•์Šค๋Ÿฝ๊ฒŒ ์ ‘๊ทผํ• ๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์—, ์ฃผ์–ด์ง„ ๋ฌผ ์›…๋ฉ์ด์˜ ์‹œ์ž‘์œ„์น˜, ๋์œ„์น˜๋ฅผ ์ •๋ ฌ์„ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ์ •๋ ฌ ์กฐ๊ฑด์€ ๋ฌผ ์›…๋ฉ์ด์˜ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ ๋ถ€ํ„ฐ, ๊ฐ™์œผ๋ฉด ๋์œ„์น˜๊ฐ€ ์ž‘์€๊ฒƒ๋ถ€ํ„ฐ ์ •๋ ฌํ–ˆ๋‹ค.

 

Comparator ์ธํ„ฐํŽ˜์ด์Šค ์ฐธ๊ณ 

 

๊ทธ ํ›„, ํ•˜๋‚˜ํ•˜๋‚˜ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ๋„๋นค์ง€๋ฅผ ์„ค์น˜ํ•  ๊ฒƒ์ธ์ง€? ์„ค์น˜ํ•œ๋‹ค๋ฉด ๋ช‡๊ฐœ์„ค์น˜ํ•˜๋Š”์ง€ ํŒ๋‹จ์„ ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๋„ˆ๋ฌด ์ƒ๊ฐ์ด ๋งŽ์•„์ง€๊ณ  ํ—ท๊ฐˆ๋ ธ๋‹ค.

 

๋ฐฐ์—ด์—๋Š” ๋ฌผ ์›…๋ฉ์ด์˜ ์‹œ์ž‘์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์ด ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ, ์•ž์—์„œ๋ถ€ํ„ฐ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ํ•„์š”ํ•œ ๋„๋นค์ง€์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋˜๋Š”๋ฐ, range ๋ณ€์ˆ˜๋Š” ๋„๋นค์ง€๋กœ ๋ฌผ์›…๋ฉ์ด๋ฅผ ๋ฎ์—ˆ์„๋•Œ, ์–ด๋””๊นŒ์ง€ ๋ฎ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒ”์œ„์ด๋‹ค.

 

๋งŒ์•ฝ ๋ฌผ ์›…๋ฉ์ด์˜ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ range ๋ฒ”์œ„๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ์ด ๊ณณ์€ ๋„๋นค์ง€๋ฅผ ๋ฎ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์›…๋ฉ์ด์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ range ๋ฒ”์œ„๋กœ ์„ค์ •ํ•œ๋‹ค. 

๊ทธ ํ›„ ์›…๋ฉ์ด์˜ ๋๋‚˜๋Š” ์œ„์น˜๊นŒ์ง€ ๋„๋นค์ง€๋ฅผ ๋ฎ์–ด์•ผ ํ•˜๋Š”๋ฐ,

์›…๋ฉ์ด์˜ ๋๋‚˜๋Š” ์œ„์น˜(arr[i][1]) ๊ฐ€ ๋ฒ”์œ„(range)๋ณด๋‹ค ํด ๋•Œ ๊นŒ์ง€ ๋„๋นค์ง€๋ฅผ ๋ฎ๊ณ , ๋ฒ”์œ„๋ฅผ ๋„๋นค์ง€ ๊ธธ์ด๋งŒํผ ๋Š˜๋ฆฐ๋‹ค

				while(arr[i][1] > range) {
					range += L;
					nulpan ++;
				}

 

์œ„ ํ’€์ด๋ฅผ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

โ— ํ˜„์žฌ ๋ฌผ์›…๋ฉ์ด์˜ ์‹œ์ž‘ ์œ„์น˜์™€ ์ด์ „์— ์„ค์น˜ํ•œ ๋„๋นค์ง€์˜ ๋ฒ”์œ„๋ฅผ ๋น„๊ตํ•œ๋‹ค.

โ— ๋งŒ์•ฝ ํ˜„์žฌ ๋ฌผ ์›…๋ฉ์ด์˜ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ์ด์ „ ์„ค์น˜ํ•œ ๋„๋นค์ง€์˜ ๋ฒ”์œ„๋ณด๋‹ค ํฌ๋ฉด ๋„๋นค์ง€๋ฅผ ๋ฎ์–ด์•ผํ•œ๋‹ค.

โ— ์ƒˆ๋กœ ๋„๋นค์ง€๋ฅผ ๋ฎ์–ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด๋ฏ€๋กœ, ๋ฒ”์œ„๋ฅผ ๋ฌผ ์›…๋ฉ์ด์˜ ์‹œ์ž‘ ์œ„์น˜๋กœ ์ง€์ •ํ•œ๋‹ค. range = arr[i][0]

โ— ๋ฌผ ์›…๋ฉ์ด์˜ ๋๋‚˜๋Š” ์œ„์น˜๊ฐ€ ๋„๋นค์ง€ ๋ฒ”์œ„๋ณด๋‹ค ํฐ๊ฒฝ์šฐ - ๋ฌผ ์›…๋ฉ์ด์˜ ๋๋‚˜๋Š” ์œ„์น˜๊นŒ์ง€ ๋„๋นค์ง€๋ฅผ ๊ณ„์† ๋ฎ๋Š”๋‹ค.

 

 

๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ ๋„ˆ๋ฌด ๋จธ๋ฆฌ์•„ํ”„๋‹ค...

๋น„์Šทํ•œ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๋ฐฑ์ค€ 1449๋ฒˆ ์ˆ˜๋ฆฌ๊ณตํ•ญ์Šน

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ธฐ์ง€๊ตญ์„ค์น˜

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€