백준

백준 1449 수리공 항승(Java)

Park DJ 2023. 2. 3. 16:34

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

 

1449번: 수리공 항승

첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 먼저 물이 새는 곳을 배열에 입력받은 후 오름차순으로 정렬해 줍니다. 그다음 배열의 첫 번째 값을 시작점으로 해서 시작점과 그다음 물이 새는 곳이 l로 막이 지면 continue 해주면 되고 막아지지 않으면 count++을 한 뒤 시작점을 그다음 물이 새는 곳으로 해서 반복해 주면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int count = 1;
    int n = sc.nextInt();
    int l = sc.nextInt();
    int[] arr = new int[n];
    
    for(int i = 0; i < n; i++) {
      arr[i] = sc.nextInt();
    }

    Arrays.sort(arr);

    int start = arr[0];
    
    for(int i = 1; i < n; i++) {
      if(arr[i] < start + l) continue;
      else {
        count++;
        start = arr[i];
      }
    }

    System.out.println(count);
  }
}