티스토리 뷰


SWEA #18662 등차수열 만들기

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

🔒 문제 설명

세 개의 실수 x,y,z가 등차수열을 이룬다는 것은, y - x = z - y라는 것과 동치이다.

세 정수 a,b,c가 주어진다. 당신은 음이 아닌 실수 x을 정한 뒤, 세 정수 중 하나에서 x만큼을 더하거나 뺄 수 있다. 당신은 이러한 작업을 정확히 한 번 하여 a,b,c가 등차수열을 이루도록 하려고 한다. 
이것이 가능하도록 하는 가장 작은 x의 값이 얼마인지 구하는 프로그램을 작성하라.

 

⌨️ 입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스는 하나의 줄로 이루어진다. 각 줄에는 세 개의 정수 a,b,c (0≤a,b,c≤1000)가 공백 하나를 사이로 두고 주어진다.

 

🖥️ 출력

각 테스트 케이스마다 한 줄에 하나씩, a,b,c가 등차수열을 이루도록 할 수 있는 가장 작은 x의 값을 출력한다. 참값과의 절대 오차 또는 상대 오차가 10-9이하이면 정답 처리된다.
x의 값이 정수가 아닐 수 있음에 유의하라. (x값은 소수점 1자리까지 출력한다.)

 


 

import java.util.Scanner;
class Solution {

    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();

        for(int test_case = 1; test_case <= T; test_case++)
        {
            double x = sc.nextDouble();
            double y = sc.nextDouble();
            double z = sc.nextDouble();
            
            double a = y - x;
            double b = z - y;

            //gap = 등차수열의 공차
            double gap = (a + b) / 2;

            //original = x + gap, 즉 y의 올바른 값
            double original = x + gap ;
            
            double answer = y - original;

            if(answer<0) answer *= -1;

            System.out.println("#"+test_case+" "+answer);
        }
    }
}

 

처음에 문제를 딱 봤을 땐 이게 뭐지 했는데 수학적인 사고로 조금만 고민해보면 정말 쉽게 풀리는 문제이다. 

이 때, 주의할 점은 x,y,z 세 개의 숫자 중 하나에만 더하거나 빼서 등차수열을 만든다는 점이다. 

힌트는 세 개의 숫자 중 ' y ' 하나가 바로 그 더하거나 빼는 대상이 된다는 점이다.

그래서 공차를 구하고 그 공차 값을 이용해서 y가 얼마나 모자른지 아니면 큰지 갭을 구해서 출력하면 된다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함