본문 바로가기

코드포스

[CodeTON Round 1] B. Subtract Operation

 

 


https://coding-factory.tistory.com/557

 

[Java] 자바 TreeMap 사용법 & 예제 총정리

TreeMap이란? TreeMap은 이진트리를 기반으로 한 Map 컬렉션입니다. 같은 Tree구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면 TreeMap은 키와 값이 저장된 Map, Etnry를 저장한다는 점입

coding-factory.tistory.com

 

※ [a1, a2, a3, a4] 일 때 앞에서 부터 차례대로 뺀 것이 답일 경우

   [a2-a1, a3-a1, a4-a1] -> [a3-(a2-a1)-a1, a4-(a2-a1)-a1] -> [a3-a2, a4-a2] -> [a4-(a3-a2)-a2] -> [a4-a3]

※ 모든 시행은 an - a(n-1)로 끝난다.

 

1. 입력받은 수를 treeset에 넣는다. (탐색 시간을 줄이기 위해)

2. treeset에 있는 수 + k가 treeset에 포함되어 있는지 확인한다. (an - a(n-1) = k 가 되는지 확인 == an = k + a(n-1))

-- c++ unordered_map 해시저격을 조심하자--

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.TreeSet;
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) {
 			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 			int n = Integer.parseInt(st.nextToken());
 			int k = Integer.parseInt(st.nextToken());
 			TreeSet<Integer> ordered = new TreeSet<>();
 			boolean result = false;
 			st = new StringTokenizer(br.readLine(), " ");
 			for(int i = 0; i < n; i++) {
 				int a = Integer.parseInt(st.nextToken());
 				ordered.add(a);
 			}
 			for(int i : ordered) {
 				if(ordered.contains(i+k)) {
 					result = true;
 				}
 			}
 			if(result)
 				sb.append("YES").append('\n');
 			else
 				sb.append("NO").append('\n');	
 		}
 		System.out.println(sb);
  	}
}