05-17 00:03
Recent Posts
Recent Comments
관리 메뉴

miinsun

[Algorithm]μ•Œκ³ λ¦¬μ¦˜ μžλ°”_69 κ²°ν˜Όμ‹ λ³Έλ¬Έ

Algorithm/Java

[Algorithm]μ•Œκ³ λ¦¬μ¦˜ μžλ°”_69 κ²°ν˜Όμ‹

miinsun 2022. 3. 8. 23:14

πŸ’¬ λ¬Έμ œ μ„€λͺ…

ν˜„μˆ˜λŠ” λ‹€μŒ 달에 κ²°ν˜Όμ„ ν•©λ‹ˆλ‹€. ν˜„μˆ˜λŠ” κ²°ν˜Όμ‹ ν”Όλ‘œμ—°μ„ μž₯μ†Œλ₯Ό 빌렀 3일간 쉬지 μ•Šκ³  ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

ν”Όλ‘œμ—°μ— μ°Έμ„ν•˜λŠ” μΉœκ΅¬λ“€ Nλͺ…μ˜ μ°Έμ„ν•˜λŠ” μ‹œκ°„μ •λ³΄λ₯Ό ν˜„μˆ˜λŠ” μΉœκ΅¬λ“€μ—κ²Œ 미리 μš”κ΅¬ν–ˆμŠ΅λ‹ˆλ‹€. 각 μΉœκ΅¬λ“€μ€ μžμ‹ μ΄ λͺ‡ μ‹œμ— λ„μ°©ν•΄μ„œ λͺ‡ μ‹œμ— λ– λ‚  것인지 ν˜„μˆ˜μ—κ²Œ μ•Œλ €μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

ν˜„μˆ˜λŠ” 이 정보λ₯Ό λ°”νƒ•μœΌλ‘œ ν”Όλ‘œμ—° μž₯μ†Œμ— λ™μ‹œμ— μ‘΄μž¬ν•˜λŠ” μ΅œλŒ€ μΈμ›μˆ˜λ₯Ό κ΅¬ν•˜μ—¬ κ·Έ 인원을 μˆ˜μš©ν•  수 μžˆλŠ” μž₯μ†Œλ₯Ό 빌리렀고 ν•©λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ΄ ν˜„μˆ˜λ₯Ό λ„μ™€μ£Όμ„Έμš”.

λ§Œμ•½ ν•œ μΉœκ΅¬κ°€ μ˜€λŠ” μ‹œκ°„ 13, κ°€λŠ”μ‹œκ°„ 15라면 이 μΉœκ΅¬λŠ” 13μ‹œ 정각에 ν”Όλ‘œμ—° μž₯에 μ‘΄μž¬ν•˜λŠ” 것이고 15μ‹œ μ •κ°μ—λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

 

πŸ”¨ μž…μΆœλ ₯ 예

- μž…λ ₯ 

  • 첫째 쀄에 ν”Όλ‘œμ—°μ— 참석할 μΈμ›μˆ˜ N(5<=N<=100,000)이 μ£Όμ–΄μ§‘λ‹ˆλ‹€.
  • 두 번째 쀄뢀터 N쀄에 걸쳐 각 μΈμ›μ˜ μ˜€λŠ” μ‹œκ°„κ³Ό κ°€λŠ” μ‹œκ°„μ΄ μ£Όμ–΄μ§‘λ‹ˆλ‹€.
  • μ‹œκ°„μ€ 첫날 0μ‹œλ₯Ό 0으둜 ν•΄μ„œ λ§ˆμ§€λ§‰λ‚  λ°€ 12μ‹œλ₯Ό 72둜 ν•˜λŠ” νƒ€μž„λΌμΈμœΌλ‘œ μ˜€λŠ” μ‹œκ°„κ³Ό κ°€λŠ” μ‹œκ°„μ΄ 음이 μ•„λ‹Œ μ •μˆ˜λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.
5
14 18
12 15
15 20
20 30
5 14

 

- 좜λ ₯

  • 첫째 쀄에 ν”Όλ‘œμ—°μž₯에 λ™μ‹œμ— μ‘΄μž¬ν•˜λŠ” μ΅œλŒ€ 인원을 좜λ ₯ν•˜μ„Έμš”.
 
2

 

 

πŸ’» Solution.java

  1. λ“€μ–΄μ˜€λŠ” μ‹œκ°„κ³Ό λ‚˜κ°€λŠ” μ‹œκ°„μ„ λ‚˜λˆ  λͺ¨λ‘ κΈ°λ‘ν•œλ‹€.
  2. λ“€μ–΄μ˜€λŠ” μ‹œκ°„μ—λŠ” μΈμ›μˆ˜λ₯Ό μ¦κ°€μ‹œν‚€κ³ , λ‚˜κ°€λŠ” μ‹œκ°„μ—λŠ” μΈμ›μˆ˜λ₯Ό κ°μ†Œ μ‹œν‚¨λ‹€.
/* νšŒμ˜μ‹€ λ°°μ • :: 그리디 μ•Œκ³ λ¦¬ */

import java.util.*;
class Time implements Comparable<Time>{
	public int s, e;
	Time(int s, int e){
		this.s = s;
		this.e = e;
	}
	
	@Override
	public int compareTo(Time o) { //objectκ°€ 더 크면 음수 리턴, thisκ°€ 더 크면 μ–‘μˆ˜ 리턴, 같은 값은 0 리턴
		if(this.e == o.e) return this.s - o.s;
		else return this.e - o.e;
	}
}

public class Main {
	
	public int solution(ArrayList<Time> arr, int n) {
		int cnt = 0;
		
		Collections.sort(arr);
		int et = 0;
		for(Time ob : arr) {
			if(ob.s >= et) {
				cnt++;
				et=ob.e;
			}
		}
		return cnt;
 	}
	
	public static void main(String[] args){
		Main main = new Main();
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		ArrayList<Time> arr = new ArrayList<>();
		for(int i = 0; i < n; i++) {
			int x = sc.nextInt();
			int y = sc.nextInt();
			arr.add(new Time(x, y));
		}
		
		System.out.println(main.solution(arr, n));
		
		sc.close();
		return ;
	}
}
 
Comments