알고리즘 연습/기초 (입출력 등)

[🥉3 / 백준 2576 / 파이썬] 홀수

김세진 2021. 8. 7. 20:45
반응형

 

 

2576번: 홀수

7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어, 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지

www.acmicpc.net

 

문제

7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최솟값을 찾는 프로그램을 작성하시오.

예를 들어, 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지면 이들 중 홀수는 77, 41, 53, 85이므로 그 합은

77 + 41 + 53 + 85 = 256

이 되고,

41 < 53 < 77 < 85

이므로 홀수들 중 최솟값은 41이 된다.

입력

입력의 첫째 줄부터 일곱 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100보다 작다.

출력

홀수가 존재하지 않는 경우에는 첫째 줄에 -1을 출력한다. 홀수가 존재하는 경우 첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최솟값을 출력한다.

 

예제 입력 1 

12
77
38
41
53
92
85

예제 출력 1 

256
41




예제 입력 2 

2
4
20
32
6
10
8

예제 출력 2 

-1





 

풀이

 

입력받은 수들 중 홀수만 골라 합과 최소를 출력하는 문제이다.

 

홀수를 판별하는 방법은 연산자 % 를 사용하는 것이다.

A % B 는 A를 B로 나눈 나머지를 뜻한다. 즉,

 

10 % 2 = 0

11 % 2 = 1

 

위의 공식이 성립하게된다.

 

짝수는 무조건 2로 나눌 수 있다.

반면 홀수는 2로 나누어 떨어지지 않는다.

 

이 점을 이용하여 홀수를 판별하도록 하자.

 

r = []
for i in range(7):
    a = int(input())
    
    # 홀수 판별 후 짝수라면 continue를 이용해
    # for 문의 다음으로 넘어간다.
    # 홀수일 경우 배열 r에 넣어주도록 하자.
    if a % 2 == 0:
        continue
    else:
        r.append(a)

# 홀수가 하나도 없는 경우 -1 출력
if len(r) == 0:
    print(-1)
else:
    print(sum(r),min(r),sep="\n")
반응형