헬스장에서 N명의 회원이 운동을 하고 있다. 각 회원은 1에서 N사이의 번호가 부여되어 있고, i번 회원이 들 수 있는 역기의 무게는 Wi이다. 회원들 사이에는 M개의 친분관계 (Aj, Bj)가 있다. (Aj, Bj)는 Aj번 회원과 Bj번 회원이 친분 관계가 있다는 것을 의미한다. i번 회원은 자신과 친분 관계가 있는 다른 회원보다 들 수 있는 역기의 무게가 무거우면 자신이 최고라고 생각한다. 단, 누구와도 친분이 없는 멤버는 본인이 최고라고 생각한다.
이 헬스장에서 자신이 최고라고 생각하는 회원은 몇 명인가?
2 ≤ N ≤ 105
1 ≤ M ≤ 105
1 ≤ Wi ≤ 109
1 ≤ Aj, Bj ≤ N
Aj ≠ Bj
첫 번째 줄에 두 정수 N, M이 주어진다.
두 번째 줄에 N개의 정수 W1, W2, ... , WN 이 주어진다.
다음 M개의 줄의 j번째 줄에는 두 정수 Aj, Bj 가 주어진다.
첫 번째 줄에 자신이 최고라고 생각하는 회원 수를 출력한다.
5 3
1 2 3 4 5
1 3
2 4
2 5
3
5 3
7 5 7 7 1
1 2
2 3
3 4
2
import java.util.*;
public class softeer_우물안개구리 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
List<Integer> weightList = new ArrayList<>();
Map<Integer, Integer> loserMap = new HashMap<>();
for(int i = 0; i < N; i++) weightList.add(sc.nextInt());
for(int i = 0; i < M; i++) {
int first = sc.nextInt();
int second = sc.nextInt();
if(weightList.get(first - 1) > weightList.get(second - 1)) {
loserMap.put(second, weightList.get(second - 1));
} else if(weightList.get(first - 1) < weightList.get(second - 1)) {
loserMap.put(first, weightList.get(first - 1));
} else {
loserMap.put(first, weightList.get(first - 1));
loserMap.put(second, weightList.get(second - 1));
}
}
System.out.println(N - loserMap.size());
}
}
알고리즘 그런거 없고 생각되는대로 풀었는데 맞았다.