Algorithm/백준
Backjoon(백준) 1946번 - 신입사원(Java)
GrapeMilk
2020. 4. 17. 17:58
( https://www.acmicpc.net/problem/1946 )
- 해결방법
서류심사 순위 를 기준으로 오름차순으로 정렬한 뒤, 면접 점수 순위를 기준으로 앞에서 부터 최솟값을 갱신하면서 카운트를 샌다
1) 서류심사 순위와 면접 점수를 HashMap을 이용하여 key, value값으로 저장한 뒤
2) 서류심사 순위인 key값을 기준으로 오름차순 정렬하기 위해 TreeMap을 이용한다.
3) key값으로 value를 불러와서, value를 비교하면서 합격자들의 카운트를 더해간다.
- 소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class NewEmployee {
public static void main(String[] args) throws IOException {
Map<Integer, Integer> a = new HashMap<Integer, Integer>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t;
t = Integer.parseInt(br.readLine());
while (t > 0) {
a.clear();
int n, min = 100001, result = 0;
n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
String x;
x = br.readLine();
String[] arr = x.split(" ");
a.put(Integer.parseInt(arr[0]), Integer.parseInt(arr[1]));
}
TreeMap<Integer, Integer> tm = new TreeMap<Integer, Integer>(a);
for (Integer key : tm.keySet()) {
if (min > tm.get(key)) {
min = tm.get(key);
result ++;
}
}
System.out.println(result);
t--;
}
}
}
* Map구조에서 key값 정렬하기
- HashMap으로 선언하여 <Key, Value>를 설정하고 TreeMap으로 바꿔서 key값이나 value값을 기준으로 정렬해준다.
- HashMap은 내부 hash 값에 따라 키 순서가 정해지므로 특정 규칙없이 출력된다. 따라서 TreeMap으로 변환해야 한다
( https://jobc.tistory.com/176 )
* StringTokenizer
- spilt는 원하는 구획문자로 끊은 뒤에 배열로 만들어주고, Tokenizer는 토큰으로 저장해서 다른 메서드와 함께 처리할 수 있다
( https://arer.tistory.com/48 )
* clear()
- 배열안의 객체를 0으로 만들어 주는 함수
( https://codechacha.com/ko/java-collections-arraylist-clear/ )