[Algorithm] ๐ŸŽฅํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋‹จ์† ์นด๋ฉ”๋ผ

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

Algorithm

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

0. ๋ฌธ์ œ

๊ณ ์†๋„๋กœ๋ฅผ ์ด๋™ํ•˜๋Š” ๋ชจ๋“  ์ฐจ๋Ÿ‰์ด ๊ณ ์†๋„๋กœ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ๋‹จ์†์šฉ ์นด๋ฉ”๋ผ๋ฅผ ํ•œ ๋ฒˆ์€ ๋งŒ๋‚˜๋„๋ก ์นด๋ฉ”๋ผ๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์†๋„๋กœ๋ฅผ ์ด๋™ํ•˜๋Š” ์ฐจ๋Ÿ‰์˜ ๊ฒฝ๋กœ routes๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์ฐจ๋Ÿ‰์ด ํ•œ ๋ฒˆ์€ ๋‹จ์†์šฉ ์นด๋ฉ”๋ผ๋ฅผ ๋งŒ๋‚˜๋„๋ก ํ•˜๋ ค๋ฉด ์ตœ์†Œ ๋ช‡ ๋Œ€์˜ ์นด๋ฉ”๋ผ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
์ฐจ๋Ÿ‰์˜ ๋Œ€์ˆ˜๋Š” 1๋Œ€ ์ด์ƒ 10,000๋Œ€ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
routes์—๋Š” ์ฐจ๋Ÿ‰์˜ ์ด๋™ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ
routes[i][0]์—๋Š” i๋ฒˆ์งธ ์ฐจ๋Ÿ‰์ด ๊ณ ์†๋„๋กœ์— ์ง„์ž…ํ•œ ์ง€์ , routes[i][1]์—๋Š” i๋ฒˆ์งธ ์ฐจ๋Ÿ‰์ด ๊ณ ์†๋„๋กœ์—์„œ ๋‚˜๊ฐ„ ์ง€์ ์ด ์ ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐจ๋Ÿ‰์˜ ์ง„์ž…/์ง„์ถœ ์ง€์ ์— ์นด๋ฉ”๋ผ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด๋„ ์นด๋ฉ”๋ผ๋ฅผ ๋งŒ๋‚œ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.
์ฐจ๋Ÿ‰์˜ ์ง„์ž… ์ง€์ , ์ง„์ถœ ์ง€์ ์€ -30,000 ์ด์ƒ 30,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ
routes : [[-20,15], [-14,-5], [-18,-13], [-5,-3]]
return : 2

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

๐Ÿ’ก ๋‚˜๊ฐ€๋Š” ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
๐Ÿ’ก ์•ž์— ์ฐจ๊ฐ€ ๋‚˜๊ฐ€๋Š” ์‹œ๊ฐ„๊ณผ ๋’ค์— ์ฐจ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์‹œ๊ฐ„์„ ๋น„๊ตํ•˜์—ฌ ํšŸ์ˆ˜๋ฅผ ์„ธ์คŒ

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

1) ๋‚˜๊ฐ€๋Š” ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

Arrays.sort(routes, new Comparator<int[]>(){
	@Override
  public int compare(int[] r1, int[] r2){
	  return r1[1] - r2[1];
  }
});

2) ์•ž์— ์ฐจ๊ฐ€ ๋‚˜๊ฐ€๋Š” ์‹œ๊ฐ„๊ณผ ๋’ค์— ์ฐจ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์‹œ๊ฐ„์„ ๋น„๊ตํ•˜์—ฌ ํšŸ์ˆ˜๋ฅผ ์„ธ์คŒ

if(time < routes[i][0]){
		answer++;
	  time = routes[i][1];
}

3. ์ฝ”๋“œ

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public int solution(int[][] routes) {
        int answer = 1;
        
        Arrays.sort(routes, new Comparator<int[]>(){
            @Override
            public int compare(int[] r1, int[] r2){
                return r1[1] - r2[1];
            }
        });
        
        int time = routes[0][1];
        for(int i=1; i<routes.length; i++){
            if(time < routes[i][0]){
                answer++;
                time = routes[i][1];
            }
        }
        return answer;
    }
}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

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

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