※ 가장 큰 수부터 나누면 큰 수 만 0으로 만들고 모든 수가 그대로 남음 [2, 5, 6, 8] -> [2, 5, 6, 0]
※ 1이 있다면 (가장 큰 수 - 1) 로 나누면 큰 수 만 1로 만들고 모든 수가 그대로 남음 [1, 5, 8] -> [1, 5, 1]
1. 1이 없다면 무조건 yes
2. 1이 있고 0도 있다면 무조건 no
3. 1이 있고 0이 없다면 위의 조건을 만족해야 한다. (정렬 한 뒤 arr[i]-1 == arr[i] 1 차이나면 no)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String arg[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
while(T --> 0) {
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int[] arr = new int[n];
boolean zero = false;
boolean one = false;
for(int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
if(arr[i] == 0)
zero = true;
if(arr[i] == 1)
one = true;
}
if(!one)
sb.append("YES").append('\n');
else {
if(zero)
sb.append("NO").append('\n');
else {
boolean result = false;
Arrays.sort(arr);
for(int i = 1; i < n; i++) {
if(arr[i]-1 == arr[i-1]) {
result = true;
break;
}
}
if(!result) {
sb.append("YES").append('\n');
}
else {
sb.append("NO").append('\n');
}
}
}
}
System.out.println(sb);
}
}
'코드포스' 카테고리의 다른 글
[April Fools Day Contest 2022] A. Who Tested? (0) | 2022.04.06 |
---|---|
[Codeforces Round #780 (Div. 3)] C. Get an Even String (0) | 2022.04.04 |
[Codeforces Round #779 (Div. 2)] C. Shinju and the Lost Permutation (0) | 2022.03.30 |
[CodeTON Round 1] B. Subtract Operation (0) | 2022.03.30 |
[Codeforces Round #779 (Div. 2)] B. Marin and Anti-coprime Permutation (0) | 2022.03.29 |