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);
}
}
'[백준] PS > Java [실랜디]' 카테고리의 다른 글
[백준 2811] 상범이의 우울 (0) | 2025.04.29 |
---|---|
[백준 3107] IPv6 - JAVA (0) | 2025.04.29 |
[백준 2548] 대표 자연수 - JAVA (0) | 2025.04.28 |
[백준 2713] 규현이의 사랑을 담은 문자메시지 - JAVA (1) | 2025.04.28 |
[백준 2716] 원숭이 매달기 - JAVA (0) | 2025.04.28 |