문제 : abc252_b
N개의 입력값 중 가장 큰 수를 제외한 데이터는 의미가 없다. 결국, N개의 입력값 중 가장 큰 수의 인덱스들이 K개의 입력값 중에 포함된다면 Yes, 아니라면 No를 출력해주면 되는 문제이다.
따라서 내 경우엔 N개를 입력받으면서 max 값을 찾는다. 이 때 새로운 max값이 나타난다면 HashSet을 초기화하고, max값과 동일한값이 나타날 시 HashSet에 추가하는 식으로 진행했다. 이후 K개를 입력받으면서 HashSet에 있는지만 판단해줬다.
코드 : github
...
private void solution() throws Exception {
int n = nextInt();
int k = nextInt();
HashSet<Integer> hs = new HashSet<>();
int max = 0;
for (int i = 1; i <= n; i++) {
int cur = nextInt();
if (cur == max) hs.add(i);
else if (cur > max) {
hs = new HashSet<>();
hs.add(i);
max = cur;
}
}
while (k-->0) {
if (hs.contains(nextInt())) {
System.out.println("Yes");
return;
}
}
System.out.println("No");
}
...
댓글