Algorithm/백준 알고리즘
백준_1946 신입 사원(자바) / 그리디 알고리즘
미스터로즈
2021. 4. 2. 19:15
시간 & 메모리 제한
문제
입력 & 출력
그리디 알고리즘을 이용한 풀이
package com.Back;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Back_1946 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int testCase = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int tc = 0; tc < testCase; tc++) {
int N = Integer.parseInt(br.readLine());
rank[] r = new rank[N];
int min = Integer.MAX_VALUE;
int ans = 0;
for (int i = 0; i < N; i++) {
st= new StringTokenizer(br.readLine());
int first = Integer.parseInt(st.nextToken());
int second = Integer.parseInt(st.nextToken());
r[i] = new rank(first, second);
}
Arrays.sort(r);
for (int i = 0; i < N; i++) {
if(min>r[i].secR) {
min=r[i].secR;
ans++;
}
}
sb.append(ans+"\n");
}
System.out.println(sb);
}
static class rank implements Comparable<rank>{
int firR;
int secR;
public rank(int firR, int secR) {
super();
this.firR = firR;
this.secR = secR;
}
@Override
public int compareTo(rank o) {
return Integer.compare(this.firR, o.firR);
}
}
}
- 그리디 알고리즘을 이요해서 문제풀이를 진행했습니다.
- 그리디 알고리즘을 구현하기 위해서 클래스를 만들었고, 비교를 위해서 Comparable를 사용했습니다.
- 첫번째 값을 비교 했고, 두번째 값을 비교하면서 최솟값으로 담아가며, 답을 구했습니다.
- 두번째 예시를 예로 들어봤습니다. 어떤 값으로 정렬을 해도 상관이 없습니다. 정렬한 값 외의 값으로 비교 작업을 하면 됩니다.
- 두번째 값을 비교할 때, 두번째 값에 대한 min값을 잡아줘야 합니다.