본문 바로가기
알고리즘/SWEA

SWEA D3 18662. 등차수열 만들기 (python)

by 개발하는 호랑이 2024. 2. 26.

등차수열 만들기

풀이

등차수열 문제이다.
문제에 안적힌 내용들이 있는데, 아래 먼저 푼 사람들의 내용을 보고 알았다.
주어지는 a,b,c의 순서는 바꿀 필요없다.
0의 출력은 0이 아니라 0.0으로 되어야한다.

테스트케이스중 0,2,1 의 경우 답이 1.5인데 이유는 2에서 1.5를 빼면 0,0.5,1 로 0.5를 값으로 하는 등차수열이 되기 때문이다.
또한 이 케이스에서 볼 수 있듯이 순서를 바꿔도 된다면 답은 0이 되어야하는데 그렇지가 않음을 확인할 수 있다.

난 아래처럼 풀었다.
a,b,c 가 있을 때, c-b = b-a 가 되어야하고, 또한 이때 이게 성립하지 않으면 a,b,c중에 가장 작은 더하거나 뺄 x값을 정해줘야하는 문제이다.
그래서 solution이라는 함수를 생성하고
테스트 케이스를 이것저것 해보니
(b-a) - (c-b) 의 값을 2로 나눈 값이 되었다.

abs를 작성해준 이유는 답에 음수가 없어서이다.

def solution(a,b,c):
    return (abs((b-a) - (c-b)) /2)

T = int(input())
for testcase in range(1, T+1):
    a,b,c = map(int, input().split())
    # y-x = z- y 음이 아닌 실수 x 세 정수에서 x만큼을 더하거나 빼기, 정확히 한번.
    # 가장 작은 x
    answer = solution(a,b,c)
    
    
    print(f'#{testcase} {answer}')