공부공간

BOJ - 2230 ) 수 고르기 본문

알고리즘/구현,시뮬

BOJ - 2230 ) 수 고르기

개발자가될수있을까? 2020. 6. 29. 19:08


https://www.acmicpc.net/problem/2230

 

2230번: 수 고르기

첫째 줄에 두 정수 N, M(0≤M≤2,000,000,000)이 주어진다. 다음 N개의 줄에는 차례로 A[1], A[2], …, A[N]이 주어진다. 각각의 A[i]는 0 ≤ |A[i]| ≤ 1,000,000,000을 만족한다.

www.acmicpc.net


정렬 후, 투포인터를 이용해 원소의 차이를구해준다.

 

투포인터가 가리키는 차이가 M 을넘은경우 이후의 ii값증가는 볼필요가 없다.

 



import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class 수고르기 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		int num[]= new int[n];
		int answer = 2147000000;
		for(int i = 0 ; i < n ; i++) {
			st= new StringTokenizer(br.readLine());
			num[i] = Integer.parseInt(st.nextToken());
		}
		Arrays.sort(num);
		int i = 0 , ii = 0;
		for( ; ii < n && i < n ; ) {
			if(num[ii] - num[i] >= m ) {
				answer = answer > num[ii] - num[i] ? num[ii] - num[i] : answer; 
				i++;
			}
			else ii++;
		}
		System.out.println(answer);
	}

}

'알고리즘 > 구현,시뮬' 카테고리의 다른 글

BOJ - 6497 ) 전력난  (0) 2020.07.07
BOJ - 1647 ) 도시분할계획  (0) 2020.07.07
BOJ - 1806 ) 부분합  (0) 2020.05.11
BOJ - 1644 ) 소수의 연속합  (0) 2020.05.11
BOJ - 2470 ) 두 용액  (0) 2020.05.11
Comments