본문 바로가기

코드포스

[CodeTON Round 1] C. Make Equal With Mod

 


※ 가장 큰 수부터 나누면 큰 수 만 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);
 	}
}