백준 4307번 - 개미

박진형·2021년 7월 31일
0

algorithm

목록 보기
53/111

문제 풀이

모든 개미가 가장 빨리 떨어지려면 막대를 절반 부분을 기준으로 왼쪽 오른쪽으로 각각 떨어지면 된다. 그 중 가장 안쪽에 있는 개미가 떨어지게 되는 시간이다.

모든 개미가 가장 느리게 떨어지려면 절반을 기준으로 오른쪽에있는 개미가 왼쪽으로 가서 떨어지거나 왼쪽에 있는 개미가 오른쪽으로 가서 떨어지거나 둘중 하나이다. 그 중 가장 큰 값이 가장 느리게 떨어지는 시간이다.

문제 링크

boj/4307

소스코드

PS/4307.java

import java.io.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
import java.util.Vector;

public class Main {

  public static void main(String[] args) throws IOException {

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

      int T;
     T= Integer.parseInt(br.readLine());
      for(int i=0;i<T;i++)
      {

          StringTokenizer st = new StringTokenizer(br.readLine());
          int l = Integer.parseInt(st.nextToken());
          int n = Integer.parseInt(st.nextToken());
          int[] arr = new int[n];
          for(int j=0;j<n;j++) {
              arr[j] = Integer.parseInt(br.readLine());
             
          }
          Arrays.sort(arr);
          int t1=-987654321,t2=-987654321;

          for(int j=0;j<n;j++)
          {
              if(arr[j] < l/2)
              {
                  t1=Math.max(t1,arr[j]);

              }
              else
              {
                  t1 =Math.max(t1,l-arr[j]);
              }
              if(arr[j] < l/2)
              {
                  t2=Math.max(t2,l-arr[j]);

              }
              else
              {
                  t2 =Math.max(t2,arr[j]);
              }
          }
          bw.write(Integer.toString(t1)+" "+Integer.toString(t2)+"\n");
          bw.flush();
      }


  }


}

0개의 댓글