[백준] PS/Java [실랜디]

[백준 2597] 줄자접기 - JAVA

SH3542 2025. 4. 28. 19:42

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

 

구현 문제 : 줄자를 세번 접었을 때, 길이 출력

 

 

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

class Main {

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

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    double ans = Integer.parseInt(br.readLine());

    double[][] spot = new double[3][2];

    for (int i = 0; i < 3; i++) {
      StringTokenizer stn = new StringTokenizer(br.readLine());
      spot[i][0] = Double.parseDouble(stn.nextToken());
      spot[i][1] = Double.parseDouble(stn.nextToken());
    }

    for (int i = 0; i < 3; i++) {
      double st = spot[i][0];
      double ed = spot[i][1];

      if(st == ed) continue; // 접을 필요 없는 경우

      double mid = (st + ed) / 2;
      ans = Math.max(mid, ans - mid); // 줄자 길이 => mid 기준 왼/오른쪽 중 큰 값

      for (int j = i + 1; j < 3; j++) {
        // 접으면, mid와 어떤 지점의 거리 차이가 새 좌표가 된다.
        spot[j][0] = Math.abs(spot[j][0] - mid);
        spot[j][1] = Math.abs(spot[j][1] - mid);

	// swap : 로직에서 어차피 mid만 활용하므로 스킵해도 된다.
//        if(spot[j][0] > spot[j][1]) {
//          double swap = spot[j][0];
//          spot[j][0] = spot[j][1];
//          spot[j][1] = swap;
//        }
      }
    }

    System.out.println(ans);
  }
}