본문 바로가기
2️⃣ Java/Problem Solving

[Java Algorithm] 냉장고 JUNGOL #1828

by seolhee2750 2022. 8. 16.
문제

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1101&sca=99&sfl=wr_hit&stx=1828

 

내 문제 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	static int n;

	static class Refrigerator implements Comparable<Refrigerator>{
		int low, high;

		public Refrigerator(int low, int high) {
			super();
			this.low = low;
			this.high = high;
		}

		@Override
		public int compareTo(Refrigerator o) {
			return this.high != o.high ? this.high - o.high : this.low - o.low;
		}	
	}
	
	public static void main(String[] args) throws Exception {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		n = Integer.parseInt(in.readLine());
		
		Refrigerator[] r = new Refrigerator[n];
		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(in.readLine());
			r[i] = new Refrigerator(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
		}
		
		Arrays.sort(r); // 최대 온도 기준 정렬
		int cnt = 1;
		int max = r[0].high;
		for (int i = 1; i < r.length; i++) {
			if(r[i].low > max) {
				max = r[i].high;
				cnt++;
			}
		}
		System.out.println(cnt);
	}
}

👉 그리디 문제

최대 온도를 기준으로 정렬하고, 최대 온도가 같을 경우 최소 온도를 기준으로 정렬했다.

max 변수를 활용, 정렬된 배열을 돌면서 겹쳐지지 않는 부분을 구별했다.

 

💡 피드백
  • 어려운 문제는 아니지만, 자바로 '~~기준 정렬하고 ~~같으면 ~~정렬'과 같은 정렬을
    잘 할줄 몰랐는데,,,! 이번 기회로 공부하게 되어서 이렇게 정리해 보았당.

 

 

댓글