μ• μ •μ½”λ”© πŸ’»

 

문제

 

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

 

 

문제 μš”κ΅¬μ‘°κ±΄

 

1. n개의 νšŒμ˜κ°€ μžˆλ‹€.

2. 회의 1κ°œλ‹Ή μ‹œμž‘μ‹œκ°„, λλ‚˜λŠ” μ‹œκ°„μ΄ μžˆλ‹€.

3. μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ 같을 μˆ˜λ„ μžˆλ‹€. 

4. νšŒμ˜κ°€ 쀑간에 μ€‘λ‹¨λ˜μ§€λŠ” μ•ŠλŠ”λ‹€.

 

int[] conf = new int[n][2]; 둜 

y좕을 μ„Έλ‘œλΌκ³  μƒκ°ν•˜κ³  y좕이 n개만큼 μƒμ„±λ˜κ³ ,

κ°€λ‘œ μΆ•μœΌλ‘œ 2κ°œκ°€ μƒμ„±λ˜λ‹ˆ μ‹œμž‘μ‹œκ°„, λλ‚˜λŠ” μ‹œκ°„μ„ 담을 수 μžˆλ‹€.

 

λ§Œλ“€μ–΄μ§„ 2차원배열을 μš°μ„  정렬을 ν•΄μ•Ό ν•œλ‹€.

μ’…λ£Œμ‹œκ°„μ΄ μž‘μ„μˆ˜λ‘ λ‹€μ‹œ μ‹œμž‘ν•˜λŠ” μ‹œκ°„μ΄ 빨라질 ν…Œλ‹ˆκΉŒ μ’…λ£Œμ‹œκ°„μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

 

Arrays.sort(arr,(o1,o2)->{

//μ’…λ£Œμ‹œκ°„μ΄ κ°™λ‹€λ©΄

  if(o1[1] == o2[1]){

//μ‹œμž‘μ‹œκ°„ 순으둜

    return Integer.compare(o1[0],o2[0]);

   }else{

//같지 μ•ŠμœΌλ©΄ μ’…λ£Œμ‹œκ°„ 순으둜

    retrun Integer.compare(o1[1],o2[1]);

   }

}); 

 

* compare은 μ’Œλ³€μ΄ 크면 1 μš°λ³€μ΄ 크면 -1 κ°™μœΌλ©΄ 0 return

음수,0 객체의 μžλ¦¬κ°€ μœ μ§€, μ–‘μˆ˜μΈ 경우 두 객체의 μžλ¦¬κ°€ λ³€κ²½

 

이 μ •λ ¬μ—μ„œ μ‹œκ°„μ΄ 많이 κ±Έλ Έλ‹€.. 배울 λ•Œλ„ κ·Έ 후에도 잘 μ•ˆ μ¨μ„œ

이번 κΈ°νšŒμ— 곡뢀λ₯Ό ν•  수 μžˆμ—ˆλ‹€.

λ‚˜λ¨Έμ§€λŠ” κ°„λ‹¨ν•˜κ²Œ μ •λ ¬λœ 2차원 배열을 λŒλ©΄μ„œ μ’…λ£Œμ‹œκ°„ λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ

for문으둜 μ‹œμž‘μ‹œκ°„κ³Ό λΉ„κ΅ν•˜λ©΄μ„œ μΉ΄μš΄νŠΈν•΄μ£Όλ©΄ λœλ‹€.

 

for(int i=0;i<n;i++) {
    	if(arryN[i][0]>=end) {
    		end=arryN[i][1];
    		cnt++;
    	}
    }

 

 

λ°˜μ‘ν˜•