세 정수 a, b, c에 대해서 Max(a, b) = x, Max(b, c) = y, Max(c, a) = z 이고 x, y, z가 주어질 때, a, b, c가 존재할 수 없다면 "-1 -1 -1"을, 존재할 경우에 대해 "a b c"를 출력하는 문제이다.
x, y, z의 관계에 대해서 분석하면 x > y 라면 Max(a, b) > Max(b, c) 이므로 공통인 b는 최대값이 될 수 없고, c 또한 최대값이 될 수 없으므로 a가 최대값이며 x가 된다. b는 y가 되며 c 또한 y가 되는데, 만약 Max(c, a)인 z가 최대값인 x가 아니라면 존재할 수 없게 되므로 "-1 -1 -1"을 출력하게 한다.
if(x > y) {
if(z != x) {
sb.append("-1 -1 -1").append('\n');
continue;
}
long a = x, b = y, c = y;
sb.append(a).append(" ").append(b).append(" ").append(c).append('\n');
continue;
}
y > x 또한 마찬가지로 Max(b, c) > Max(a, b) 이므로, c가 최대값 y가 되며 b는 x, a는 x가 된다. z가 y가 아니라면 존재할 수 없게 되므로 "-1 -1 -1"을 출력하게 한다.
if(y > x) {
if(y != z) {
sb.append("-1 -1 -1").append('\n');
continue;
}
long a = x, b = x, c = y;
sb.append(a).append(" ").append(b).append(" ").append(c).append('\n');
continue;
}
x == y 의 경우는 Max(a, b) == Max(b, c) 이므로 b가 최대값이며 a와 c가 같은 값이 되게 된다. z가 x나 y보다 클 수 없으며 그럴 경우은 존재할 수 없게 되므로 "-1 -1 -1"을 출력하게 한다.
if(z > x) {
sb.append("-1 -1 -1").append('\n');
continue;
}
sb.append(z).append(" ").append(y).append(" ").append(z).append('\n');
전체 코드는 다음과 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while(T-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine());
long x = Long.parseLong(st.nextToken()), y = Long.parseLong(st.nextToken());
long z = Long.parseLong(st.nextToken());
//Max(a,b) > Max(b,c) -> a > b && a > c -> a가 최대값이며 b는 최대값이 될 수 없음
if(x > y) {
if(z != x) {
sb.append("-1 -1 -1").append('\n');
continue;
}
long a = x, b = y, c = y;
sb.append(a).append(" ").append(b).append(" ").append(c).append('\n');
continue;
}
//Max(b,c) > Max(a,b) -> c > a && c > b -> c가 최대값이며 b가 최대값이 될 수 없음
if(y > x) {
if(y != z) {
sb.append("-1 -1 -1").append('\n');
continue;
}
long a = x, b = x, c = y;
sb.append(a).append(" ").append(b).append(" ").append(c).append('\n');
continue;
}
if(z > x) {
sb.append("-1 -1 -1").append('\n');
continue;
}
sb.append(z).append(" ").append(y).append(" ").append(z).append('\n');
}
br.close();
System.out.print(sb);
}
}'알고리즘(백준 등) 공부' 카테고리의 다른 글
| SWEA 24696. 직육면체 자르기 (0) | 2026.04.13 |
|---|---|
| SWEA 25330. 거리 문자열 (0) | 2026.04.12 |
| SWEA 25837. 합과 곱 (0) | 2026.04.08 |
| SWEA 25838. 여우 줄이기 (0) | 2026.04.07 |
| SWEA 26011. 정수들의 합 (0) | 2026.04.05 |