반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
주어진 수열의 홀수합과 짝수합을 같게 만드는 문제입니다.
인접한 3개의 수만 +1씩 올릴 수 있으며, 해당 연산을 최소로 사용해서 같게 만들어야 합니다.
3. 코드
import sys
input = sys.stdin.readline
#입력
N = int(input())
lst = list(map(int, input().split()))
#홀수, 짝수합
odd_sum = 0
even_sum = 0
for i in range(N):
if i%2 == 0:
odd_sum += lst[i]
else:
even_sum += lst[i]
# N=3이고 홀수합이 더 많다면 불가능
if N == 3 and odd_sum > even_sum:
print(-1)
# 그 외에는 절대값 차이만큼 반복
else:
print(abs(odd_sum-even_sum))
인접한 세 수를 +1씩 하므로, 연산을 1번 할 때마다 짝수합+2 홀수합+1 or 짝수합+1 홀수합+2가 됩니다.
따라서 짝수합과 홀수합의 차이만큼 연산을 반복해주면 같게 만들 수 있습니다. 하지만 만약 세 개의 수만 주어진다면, 짝수합+1 홀수합+2만 가능합니다.
그래서 N=3일 때에는 짝수합이 더 많은 경우만 연산 가능하며, 홀수합이 더 크다면 같게 만들 수 없습니다.
반응형
'Algorithm' 카테고리의 다른 글
[브루트포스/비둘기집 원리] 백준 20529 가장 가까운 세 사람의 심리적 거리 - 파이썬(Python) (0) | 2023.08.04 |
---|---|
[탐색/BFS] 백준 21736 헌내기는 친구가 필요해 - 파이썬(Python) (0) | 2023.08.04 |
[구현/수학] 백준 24313 알고리즘 수업 - 점근적 표기 1 - 파이썬(Python) (1) | 2023.07.24 |
[구현/수학] 백준 18110 solved.ac - 파이썬(Python) (0) | 2023.07.24 |
[구현/수학] 백준 28352 10! - 파이썬(Python) (0) | 2023.07.20 |
댓글