백준 Baekjoon 19572번 가뭄(Small) - JAVA

Jaeho Kim·2022년 4월 25일
0

코딩테스트

목록 보기
95/110

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

문제
가뭄에 찌든 신촌을 위해서 국렬이는 세 칸으로 구성되어 있는 신촌에 비를 내릴 것이다. 그러나 국렬이는 무능해서 각 칸마다 비를 내리지 못하고, 두 칸에 동일하게 비를 내리는 것만 할 수 있다.
1번째 칸, 2번째 칸에 동시에 뿌리는 비의 강수량을 a cm, 1번째 칸, 3번째 칸에 동시에 뿌리는 비의 강수량을 b cm, 2번째 칸, 3번째 칸에 동시에 뿌리는 비의 강수량을 c cm라고 하자. a, b, c는 모두 양의 실수여야 한다. 가뭄에 찌든 신촌이라도 비가 너무 많이 오면 상당히 곤란하고, 비가 너무 조금 와도 곤란하다. 그래서 각 칸에 해당하는 지역은 강수량이 정확히 di cm가 되어야 한다. 이때 정확한 a, b, c의 값을 구하여라.

입력
3개의 양의 정수가 입력으로 들어온다. 각각은 d1, d2, d3을 의미한다. (1 ≤ d1, d2, d3 ≤ 106)

출력
조건에 맞게 비를 내릴 수 없다면 -1을 출력한다.
조건에 맞게 비를 내릴 수 있다면 1을 출력하고, 다음 줄에 a, b, c를 소수 첫째 자리까지 반올림한 것을 공백으로 구분하여 출력한다.

예제 입력 1

4 4 4

예제 출력 1

1
2.0 2.0 2.0

예제 입력 2

1 2 3

예제 출력 2

-1

예제 입력 3

1 2 5

예제 출력 3

-1

예제 입력 4

5 8 6

예제 출력 4

1
3.5 1.5 4.5
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		double d1 = sc.nextInt();
		double d2 = sc.nextInt();
		double d3 = sc.nextInt();

		double a = (d1 + d2 + d3) / 2 - d3;
		double b = (d1 + d2 + d3) / 2 - d2;
		double c = (d1 + d2 + d3) / 2 - d1;

		if (a <= 0 || b <= 0 || c <= 0) {
			System.out.println(-1);
			return;
		} else {
			System.out.println(1);
		}

		System.out.println(a + " " + b + " " + c);
	}
}
  • 설명
  • d1 = a + b
  • d2 = a + c
  • d3 = b + c
  • a = d1 - b
  • b = d3 - c
  • c = d2 - a
  • (d1 + d2 + d3) / 2 = a + b + c
profile
Hello, World!

0개의 댓글