https://school.programmers.co.kr/learn/courses/30/lessons/181188

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

 

 

 

๋ฌธ์ œ

  • ๋ฐœ์‚ฌํ•œ ๋ฏธ์‚ฌ์ผ์€ x์ถ•์— ํ‰ํ–‰ํ•œ ์ง์„  ํ˜•ํƒœ์˜ ๋ชจ์–‘์ด๋ฉฐ ์ •์ˆ˜ ์Œ (s, e) ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋จ
  • y ์ถ•์— ์ˆ˜ํ‰์ด ๋˜๋„๋ก ๋ฏธ์‚ฌ์ผ์„ ๋ฐœ์‚ฌํ•˜๋ฉฐ, ๋ฐœ์‚ฌ๋œ ๋ฏธ์‚ฌ์ผ์€ ํ•ด๋‹น x ์ขŒํ‘œ์— ๊ฑธ์ณ์žˆ๋Š” ๋ชจ๋“  ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์„ ๊ด€ํ†ตํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์š”๊ฒฉํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹จ, ๊ฐœ๊ตฌ๊ฐ„ (s, e)๋กœ ํ‘œํ˜„๋˜๋Š” ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์€ s์™€ e์—์„œ ๋ฐœ์‚ฌํ•˜๋Š” ์š”๊ฒฉ ๋ฏธ์‚ฌ์ผ๋กœ๋Š” ์š”๊ฒฉํ•  ์ˆ˜ ์—†์Šต
  • ๊ฐ ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์˜ x ์ขŒํ‘œ ๋ฒ”์œ„ ๋ชฉ๋ก targets์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์„ ์š”๊ฒฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์š”๊ฒฉ ๋ฏธ์‚ฌ์ผ ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ

 

์ œํ•œ ์‚ฌํ•ญ

  • 1 โ‰ค targets์˜ ๊ธธ์ด โ‰ค 500,000
  • targets์˜ ๊ฐ ํ–‰์€ [s,e] ํ˜•ํƒœ
  • 0 โ‰ค s < e โ‰ค 100,000,000

 

์ถœ์ฒ˜ : ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ (https://school.programmers.co.kr/learn/courses/30/lessons/181188)

 

 

 

 

 

ํ’€์ด

 ์˜ˆ์‹œ๋กœ ๋‚˜์˜จ ๊ทธ๋ฆผ์„ ๋ณด๋‹ˆ ํšŒ์˜์‹ค ๋ฌธ์ œ(https://www.acmicpc.net/problem/1931)๊ฐ€ ์ƒ๊ฐ์ด ๋‚ฌ๋‹ค. 

ํšŒ์˜์‹ค ๋ฌธ์ œ๋Š” ํšŒ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ๋๋‚˜๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋Œ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํšŒ์˜์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ์—์„œ๋Š” ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ ‘๊ทผ๋ฒ•์€ ๊ทธ๋ฆฌ๋””๋กœ ์œ ์‚ฌํ•  ๊ฒƒ ๊ฐ™์•˜๊ณ , ๋ฏธ์‚ฌ์ผ ์‹œ์ž‘ ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•ด๋ดค๋‹ค.

[1, 4], [3, 7], [4, 5], [4, 8], [5, 12], [10, 14], [11, 13] 

 

๊ทธ๋ฆฌ๊ณ  ๋ฏธ์‚ฌ์ผ ์ข…๋ฃŒ์‹œ์ ์ด ๋‹ค์Œ ๋ฏธ์‚ฌ์ผ ์‹œ์ž‘์‹œ์ ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€์ง€ ํ™•์ธํ•˜๊ณ , ๊ธฐ์ค€์ ์„ ๊ฐฑ์‹ ํ•˜๊ณ , ๋ฏธ์‚ฌ์ผ์„ ์š”๊ฒฉํ•˜๋Š” ์‹œ์ ์œผ๋กœ ์‚ผ์•˜๋‹ค.

 

[1, 4], [3, 7], [4, 5], [4, 8], [5, 12], [10, 14], [11, 13] 

 

์ด๋ ‡๊ฒŒ 3๊ฐœ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

 

ํ•˜์ง€๋งŒ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค!

 

 

๋ฏธ์‚ฌ์ผ ์ข…๋ฃŒ ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•ด๋ดค๋‹ค.

[1, 4], [4, 5], [3, 7], [4, 8], [5, 12], [11, 13], [10, 14]

 

๋˜‘๊ฐ™์ด 3๊ฐœ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, ๋ฏธ์‚ฌ์ผ์„ ์š”๊ฒฉํ•˜๋Š” ์ง€์ ์ด ๋‹ค๋ฅด๋‹ค.

 

 

 

๊ฒฐ๊ตญ ํšŒ์˜์‹ค ๋ฌธ์ œ์™€ ๋˜‘๊ฐ™์€ ํ’€์ด์ด๋‹ค. (https://programmingiraffe.tistory.com/57)

 

 

 

 

 

์ฝ”๋“œ

import java.util.*;

class Solution {
    public int solution(int[][] targets) {
        //1. ๋ฏธ์‚ฌ์ผ ์ข…๋ฃŒ์ง€์ (e)์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
        Arrays.sort(targets, (o1, o2) -> o1[1] == o2[1] ? o1[0] - o2[0] : o1[1] - o2[1]);
        
        int prev_end = 0; //๊ธฐ์ค€ : ๋ฏธ์‚ฌ์ผ ์ข…๋ฃŒ์‹œ์ (e)
        int answer = 0; //ํ•„์š”ํ•œ ์š”๊ฒฉ ๋ฏธ์‚ฌ์ผ ์ˆ˜
        
        //2. ๋ฏธ์‚ฌ์ผ ์‹œ์ž‘์ง€์ ์ด ๊ธฐ์ค€๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋ฉด ๊ฐฑ์‹ 
        for(int i = 0; i < targets.length; i++) {
            if(targets[i][0] >= prev_end) {
                prev_end = targets[i][1];
                answer++;
            }
        }
        
        return answer;
    }
}

 

 

 

 

 

๊ฒฐ๊ณผ

 

 

 

 

 

 

๋ฐฐ์šด์ 

  • 2์ฐจ์› ๋ฐฐ์—ด ์ •๋ ฌ์— ๋žŒ๋‹ค์‹ ์‚ฌ์šฉ
  • ์ •๋ ฌ ๊ธฐ์ค€์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋Š” ๋‹ค๋ฅด๋‹ค
giraffe_