⌨️ Algorithms/백준
[Python] 백준 28062번_준석이의 사탕 사기
monzheld
2023. 6. 7. 22:07
https://www.acmicpc.net/problem/28062
28062번: 준석이의 사탕 사기
준석이는 두 동생을 위해 사탕 가게에서 사탕을 최대한 많이 사 가려고 한다. 사탕 가게에는 $N$개의 사탕 묶음이 있으며 $i$번째 사탕 묶음에는 $a_i$개의 사탕이 있다. 준석이는 정말 부자라 사탕
www.acmicpc.net
- 준석이는 두 동생을 위해 사탕 가게에서 사탕을 최대한 많이 사 가려고 함
- 사탕 가게에는 N개의 사탕 묶음이 있으며 i번째 사탕 묶음에는 ai개의 사탕이 있음
- 준석이가 사간 총 사탕의 개수가 홀수가 되면 두 동생이 사탕을 한 개라도 더 갖기 위해 서로 싸울 것이라 총 짝수 개의 사탕을 가져가려고 함
- 준석이를 위해서 최대로 가져갈 수 있는 사탕의 개수를 구하기
- 입력
- 첫째 줄에 사탕 묶음의 개수 N이 주어짐 (1 <= N <= 1000)
- 둘째 줄에 각각의 사탕 묶음에 담겨있는 사탕의 개수 a1,a2,⋯,an가 주어짐 (1 <= ai <= 1000)
- 입력으로 주어지는 모든 수는 정수
- 출력
- 준석이가 최대로 가져갈 수 있는 사탕의 개수를 출력
- 사탕을 홀수 개로만 가져갈 수 있으면 0을 출력
- 시간 제한: 1초
- 메모리 제한: 1024 MB
"""
입출력 예시)
(예제 입력 1)
5
8 3 6 7 5
-> 26
(예제 입력 2)
1
5
-> 0
"""
## 의사코드 ##
# 최대한 많은 수의 사탕을 가져가야 함
# 총 짝수 개의 사탕을 가져가야 함
# -> 전체 사탕 개수의 총합(total)을 구해서 짝수이면 출력
# -> 총합이 홀수이면 가장 작은 홀수 개의 사탕부터 빼기
통과한 코드
n = int(input())
candy = list(map(int, input().split()))
# 사탕 개수 오름차순 정렬
candy.sort()
# 전체 사탕 개수 총합
total = sum(candy)
rest = 0 # 나머지
for i in range(n):
# 총합이 짝수이면 총합 출력
if total % 2 == 0:
print(total)
rest = 1
break
# 총합이 홀수인 경우
# 현재 사탕의 개수가 홀수이면 총합에서 현재 사탕 개수 빼기
if candy[i] % 2 == 1:
total -= candy[i]
print(total)
rest = 1
break
# 나머지가 0이면 사탕을 홀수 개로만 가져갈 수 있으므로 0 출력
if rest == 0:
print('0')
참고)
https://github.com/HyeokjinKang/BOJ-Solutions
GitHub - HyeokjinKang/BOJ-Solutions: 쿠피의 백준 솔루션
쿠피의 백준 솔루션. Contribute to HyeokjinKang/BOJ-Solutions development by creating an account on GitHub.
github.com