๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://softeer.ai/practice/result.do?eventIdx=1&submissionSn=SW_PRBL_SBMS_178768&psProblemId=392#hold 

 

https://softeer.ai/practice/result.do?eventIdx=1&psProblemId=392&submissionSn=SW_PRBL_SBMS_178768#hold

 

softeer.ai


1. ๋ฌธ์ œ

์ˆ˜์—… ๊ฐœ์ˆ˜์™€ ์ˆ˜์—… ์‹œ์ž‘์‹œ๊ฐ„, ๋ ์‹œ๊ฐ„์ด ์ค„๋งˆ๋‹ค ์ฃผ์–ด์ง„๋‹ค.

์ตœ๋Œ€ํ•œ ๋งŽ์€ ๊ฐœ์ˆ˜์˜ ์ˆ˜์—…์„ ๋“ค์„ ๋•Œ ์ˆ˜์—…์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ˆ˜์—…์‹œ๊ฐ„์€ ๊ฒน์น  ์ˆ˜ ์—†์œผ๋‚˜ ์‹œ์ž‘์‹œ๊ฐ„๊ณผ ๋์‹œ๊ฐ„์€ ๋™์ผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ํ’€์ด

๊ตฌํ˜„ ๋ฌธ์ œ์ด๋‹ค.

๋‚˜๋Š” ์ฒ˜์Œ์— 2๊ฐ€์ง€ ํ’€์ด๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ–ˆ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ๋Š” ๊ฐ•์˜์‹œ๊ฐ„์ด ์งง์€ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•ด์„œ cnt๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

=> ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด (3,5), (4,6), (1,4) ์˜ ๊ฒฝ์šฐ (1,4)(4,6)์œผ๋กœ ์ •๋‹ต์€ 2์ธ๋ฐ (3,5)๊ฐ€ ์„ ํƒ๋˜์–ด ๋‹ต์ด 1์ด๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐ•์˜์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ์•ˆ๋˜๊ณ  ๋์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ด์•ผ ํ•œ๋‹ค.

 

๋‘ ๋ฒˆ์งธ๋Š” DFS ํ’€์ด๋ฅผ ์ƒ๊ฐํ–ˆ๋‹ค.

=> ํ•˜์ง€๋งŒ 1 ≤ N ≤ 10^6 ์ธ ์ •์ˆ˜ ์ด๋ฏ€๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ์ด๋ฏ€๋กœ ์ข‹์ง€ ๋ชปํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์€

1. ๊ฐ•์˜ ๋ ์‹œ๊ฐ„์ด ๋น ๋ฅธ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ณ 

2. nowEnd๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์‹œ์ž‘ํ•˜์—ฌ for๋ฌธ์œผ๋กœ ์‹œ์ž‘์‹œ๊ฐ„๋ณด๋‹ค nowEnd๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ

 nowEnd๋ฅผ ๊ทธ ๊ฐ•์˜์˜ ๋ ์‹œ๊ฐ„์œผ๋กœ ๊ฐฑ์‹ , cnt๋ฅผ 1 ๋Š˜๋ ค์ค€๋‹ค.

 

์š”์•ฝ:

๋ ์‹œ๊ฐ„์ด ๋น ๋ฅธ ์ˆœ์œผ๋กœ ์ •๋ ฌ -> ์‹œ์ž‘์‹œ๊ฐ„๊ณผ ๋น„๊ต ํ›„ ๊ฐฑ์‹ 

 

์‹คํ–‰์‹œ๊ฐ„ 1943ms

๋ฉ”๋ชจ๋ฆฌ 79.3Mb

 

3. ์ฝ”๋“œ

import java.util.*;
import java.io.*;


public class Main
{
    static int N, ans, nowEnd;
    static int[][] lecture;

    public static void main(String args[]) throws Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        lecture = new int[N][2];

        for(int i=0; i<N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            lecture[i][0] = Integer.parseInt(st.nextToken());
            lecture[i][1] = Integer.parseInt(st.nextToken());
        }

        Arrays.sort(lecture, (o1,o2)->o1[1]-o2[1]);

        for (int i=0; i<N; i++) {
            if (nowEnd <= lecture[i][0]) {
                nowEnd = lecture[i][1];
                ans++;
            }
        }
        System.out.println(ans);
    }
}

 

4. ์‚ฌ๋‹ด

๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ธฐ ๋ณด๋‹จ ๋” ํšจ์œจ์ ์ด๊ณ  ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด์ž