[Silver IV] 더하기 - 28419
성능 요약
메모리: 122424 KB, 시간: 116 ms
분류
수학, 애드 혹
제출 일자
2025년 6월 5일 21:53:22
문제 설명
정수로 구성된 수열 $A_1, A_2, \cdots, A_N$이 주어진다. 우리는 이 수열에 아래 연산을 원하는 만큼 반복할 수 있다.
- 인접한 세 값을 1씩 증가시킨다.
이 연산을 최소한으로 사용해 수열의 홀수 번째 위치의 합과 짝수 번째 위치의 합을 같게 만들고자 한다. 최소 몇 번의 연산을 해야 홀수 번째 위치와 짝수 번째 위치의 합이 같아지는지 구하시오. 만약 홀수 번째 위치의 합과 짝수 번째 위치의 합을 같게 만들 수 없다면 -1을 출력한다.
입력
첫째 줄에 수열의 길이 $N$이 주어진다. $(3 \le N \le 100\,000)$
둘째 줄에 길이가 $N$인 수열 $A_1, A_2, A_3, \cdots, A_N$이 공백으로 구분되어 주어진다. $(-100\,000 \le A_i \le 100\,000)$
출력
홀수 번째 위치의 합과 짝수 번째 위치의 합을 같게 만들기 위한 최소 연산 수를 출력한다. 불가능하다면 -1을 출력한다.
💡 해결 방법
💻 코드
# https://www.acmicpc.net/problem/28419
n = int(input())
list1 = list(map(int, input().split()))
a = 0
for x in range(0, len(list1) + 1, 2):
if x < len(list1):
a += list1[x]
b = 0
for x in range(1, len(list1) + 1, 2):
if x < len(list1):
b += list1[x]
if n == 3 and a > b:
print(-1)
else:
print(abs(a - b))