알고리즘/백준

[Silver IV] 더하기 - 28419 (python)

KimMinGyun 2024. 7. 2. 12:20

문제 링크

 

 

분류

애드 혹, 수학

 

문제 설명

정수로 구성된 수열 𝐴1,𝐴2,⋯,𝐴𝑁이 주어진다. 우리는 이 수열에 아래 연산을 원하는 만큼 반복할 수 있다.

  • 인접한 세 값을 1씩 증가시킨다.

이 연산을 최소한으로 사용해 수열의 홀수 번째 위치의 합과 짝수 번째 위치의 합을 같게 만들고자 한다. 최소 몇 번의 연산을 해야 홀수 번째 위치와 짝수 번째 위치의 합이 같아지는지 구하시오. 만약 홀수 번째 위치의 합과 짝수 번째 위치의 합을 같게 만들 수 없다면 -1을 출력한다.

입력

첫째 줄에 수열의 길이 𝑁이 주어진다. (3≤𝑁≤100000)

둘째 줄에 길이가 𝑁인 수열 𝐴1,𝐴2,𝐴3,⋯,𝐴𝑁이 공백으로 구분되어 주어진다. (−100000≤𝐴𝑖≤100000)

출력

홀수 번째 위치의 합과 짝수 번째 위치의 합을 같게 만들기 위한 최소 연산 수를 출력한다. 불가능하다면 -1을 출력한다.

 

코드

 

n = int(input())
arr = list(map(int, input().split()))

odd = 0
even = 0
for i in range(n):
    if i%2 == 0:
        even += arr[i]
    else:
        odd += arr[i]

if n == 3 and odd == even - 2:
    print(-1)
else:
    print(abs(odd-even))