πŸ₯ˆ [Baekjoon / Java] 1931. νšŒμ˜μ‹€ λ°°μ •

μ΄ν•˜μ–€Β·2024λ…„ 7μ›” 4일
0

🐣 λ°±μ€€

λͺ©λ‘ 보기
30/33

문제 μ„€λͺ…


πŸ’‘ Info

λ‚΄μš©

ν•œ 개의 νšŒμ˜μ‹€μ΄ μžˆλŠ”λ° 이λ₯Ό μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” N개의 νšŒμ˜μ— λŒ€ν•˜μ—¬ νšŒμ˜μ‹€ μ‚¬μš©ν‘œλ₯Ό λ§Œλ“€λ €κ³  ν•œλ‹€. 각 회의 I에 λŒ€ν•΄ μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ μ£Όμ–΄μ Έ 있고, 각 νšŒμ˜κ°€ κ²ΉμΉ˜μ§€ μ•Šκ²Œ ν•˜λ©΄μ„œ νšŒμ˜μ‹€μ„ μ‚¬μš©ν•  수 μžˆλŠ” 회의의 μ΅œλŒ€ 개수λ₯Ό μ°Ύμ•„λ³΄μž. 단, νšŒμ˜λŠ” ν•œλ²ˆ μ‹œμž‘ν•˜λ©΄ 쀑간에 쀑단될 수 μ—†μœΌλ©° ν•œ νšŒμ˜κ°€ λλ‚˜λŠ” 것과 λ™μ‹œμ— λ‹€μŒ νšŒμ˜κ°€ μ‹œμž‘λ  수 μžˆλ‹€. 회의의 μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ 같을 μˆ˜λ„ μžˆλ‹€. 이 κ²½μš°μ—λŠ” μ‹œμž‘ν•˜μžλ§ˆμž λλ‚˜λŠ” κ²ƒμœΌλ‘œ μƒκ°ν•˜λ©΄ λœλ‹€.

πŸ“₯μž…λ ₯ 쑰건

  • 첫째 쀄에 회의의 수 N(1 ≀ N ≀ 100,000)이 주어진닀.
  • λ‘˜μ§Έ 쀄뢀터 N+1 μ€„κΉŒμ§€ 각 회의의 정보가 μ£Όμ–΄μ§€λŠ”λ° 이것은 곡백을 사이에 두고 회의의 μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ 주어진닀.
  • μ‹œμž‘ μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ€ 231-1보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜ λ˜λŠ” 0이닀.
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 14

πŸ“€μΆœλ ₯ 쑰건

  • 첫째 쀄에 μ΅œλŒ€ μ‚¬μš©ν•  수 μžˆλŠ” 회의의 μ΅œλŒ€ 개수λ₯Ό 좜λ ₯ν•œλ‹€.
4


문제 이해


  • μ „ν˜•μ μΈ νšŒμ˜μ‹€ λ°°μ • μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•΄ ν’€μ–΄μ•Ό ν•˜λŠ” 문제


μ•Œκ³ λ¦¬μ¦˜


μ‹€μ œ 풀이 μ‹œκ°„ : 10λΆ„

  • μž…λ ₯

    • 회의 수 N μž…λ ₯λ°›κΈ°
    • 회의 μ‹œμž‘ μ‹œκ°„, 회의 μ’…λ£Œ μ‹œκ°„ μž…λ ₯λ°›κΈ°(2차원 λ°°μ—΄λ‘œ)
  • 계산

    • μ’…λ£Œ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ μ •λ ¬ -> λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ν•˜κΈ°(reverse)
    • count μ„ μ–Έ
    • 회의 μ‹œμž‘ μ‹œκ°„κ³Ό 비ꡐλ₯Ό μœ„ν•œ 직전 μ’…λ£Œ μ‹œκ°„ μ„ μ–Έ
    • 직전 μ’…λ£Œ μ‹œκ°„ <= 회의 μ‹œμž‘ μ‹œκ°„μ΄λΌλ©΄ count 증가
  • 좜λ ₯

    • count 좜λ ₯ν•˜κΈ°
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();

        Integer[][] time = new Integer[N][2];
        for(int i=0; i<N; i++){
            time[i][0] = sc.nextInt();
            time[i][1] = sc.nextInt();
        }

        Arrays.sort(time, Collections.reverseOrder());

        int count = 0;
        int lastEndTime = 0;

        for(int i=0; i<N; i++){
            if(lastEndTime <= time[i][0]){
                lastEndTime = time[i][1];
                count++;
            }
        }
        System.out.println(count);
    }
}


μ˜€λ‹΅μ²΄ν¬


  • Exception in thread "main" java.lang.ClassCastException: class [Ljava.lang.Integer; cannot be cast to class java.lang.Comparable ([Ljava.lang.Integer; and java.lang.Comparable are in module java.base of loader 'bootstrap') 였λ₯˜ λ°œμƒ
//before
Arrays.sort(time, Collections.reverseOrder());
//after
Arrays.sort(time, new Comparator<int[]>() {

	@Override
    public int compare(int[] o1, int[] o2){
    	if (o1[1] == o2[1]) {
        	return o1[0] - o2[0];
        }
        return o1[1] - o2[1];
    }
});


μ΅œμ’… 풀이


μ‹€μ œ 풀이 μ‹œκ°„ : 20λΆ„(첫 풀이 μ‹œκ°„ 포함)

  • μž…λ ₯

    • 회의 수 N μž…λ ₯λ°›κΈ°
    • 회의 μ‹œμž‘ μ‹œκ°„, 회의 μ’…λ£Œ μ‹œκ°„ μž…λ ₯λ°›κΈ°(2차원 λ°°μ—΄λ‘œ)
  • 계산

    • μ’…λ£Œ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ μ •λ ¬ -> λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ν•˜κΈ°(Comparator둜)
    • count μ„ μ–Έ
    • 회의 μ‹œμž‘ μ‹œκ°„κ³Ό 비ꡐλ₯Ό μœ„ν•œ 직전 μ’…λ£Œ μ‹œκ°„ μ„ μ–Έ
    • 직전 μ’…λ£Œ μ‹œκ°„ <= 회의 μ‹œμž‘ μ‹œκ°„μ΄λΌλ©΄ count 증가
  • 좜λ ₯

    • count 좜λ ₯ν•˜κΈ°
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();

        int[][] time = new int[N][2];
        for(int i=0; i<N; i++){
            time[i][0] = sc.nextInt();
            time[i][1] = sc.nextInt();
        }

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

            @Override
            public int compare(int[] o1, int[] o2){
                if (o1[1] == o2[1]) {
                    return o1[0] - o2[0];
                }
                return o1[1] - o2[1];
            }
        });


        int count = 0;
        int lastEndTime = 0;

        for(int i=0; i<N; i++){
            if(lastEndTime <= time[i][0]){
                lastEndTime = time[i][1];
                count++;
            }
        }
        System.out.println(count);
    }
}

profile
μ–Έμ  κ°€ λ‚΄ μ½”λ“œλ‘œ 세상에 κΈ°μ—¬ν•  수 μžˆλ„λ‘, BE 개발 기둝 λ…ΈνŠΈβ˜˜οΈ

0개의 λŒ“κΈ€