728x90
반응형
2024.08.30기준 - 브론즈3
728x90
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 a, b, c구역의 원하는 강수량을 알려주면 3가지의 비를 이용해 정확히 맞출 수 있는지 확인하고 출력하는 문제입니다.
1. 간단하게 규칙이 있습니다.
a, b, c가 해당하는 두가지 구역을 더하고 나머지 한가지 구역을 뺀 수의 2를 나누어 주면 값이 나옵니다.
// 해당하는 구역을 더하고 나머지 구역을 뺀 수의 2를 나누어 주면 값이 나옵니다.
double a = (d1 + d2 - d3) / 2;
double b = (d1 + d3 - d2) / 2;
double c = (d2 + d3 - d1) / 2;
2. 이렇게 나온 값이 전부 0보다 크다면 출력, 아니라면 -1을 출력 해주면됩니다.
// 모든 강수량이 0보다 크다면 조건에 맞게 비를 내릴 수 있습니다.
if (a > 0 && b > 0 && c > 0) {
sb.append(1).append("\n").append(a).append(" ").append(b).append(" ").append(c);
} else { // 아니라면 비를 내릴 수 없습니다.
sb.append(-1);
}
코드
package Main;
import java.io.*;
import java.util.*;
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));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
double d1 = Double.parseDouble(st.nextToken()); // a구역
double d2 = Double.parseDouble(st.nextToken()); // b구역
double d3 = Double.parseDouble(st.nextToken()); // c구역
// 해당하는 구역을 더하고 나머지 구역을 뺀 수의 2를 나누어 주면 값이 나옵니다.
double a = (d1 + d2 - d3) / 2;
double b = (d1 + d3 - d2) / 2;
double c = (d2 + d3 - d1) / 2;
// 모든 강수량이 0보다 크다면 조건에 맞게 비를 내릴 수 있습니다.
if (a > 0 && b > 0 && c > 0) {
sb.append(1).append("\n").append(a).append(" ").append(b).append(" ").append(c);
} else { // 아니라면 비를 내릴 수 없습니다.
sb.append(-1);
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BEAKJOON / 백준 - JAVA 28463번 Toe Jumps (0) | 2024.08.31 |
---|---|
BEAKJOON / 백준 - JAVA 14494번 다이나믹이 뭐예요? (0) | 2024.08.30 |
BEAKJOON / 백준 - JAVA 25562번 차의 개수 (0) | 2024.08.29 |
BEAKJOON / 백준 - JAVA 28353번 고양이 카페 (3) | 2024.08.28 |
BEAKJOON / 백준 - JAVA 3845번 잔디깍기 (0) | 2024.08.27 |