본문 바로가기
코딩테스트 문제풀이(Python)

백준 2576번 문제풀이

by chanfficial 2022. 5. 1.

2576. 홀수

 

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을 출력한다. 홀수가 존재하는 경우 첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최솟값을 출력한다.

 

 

ex1)

입력 :

12
77
38
41
53
92
85

출력 :

256
41

 

ex2)

입력 :

2
4
20
32
6
10
8

출력 :

-1

 

 

 

 

풀이

sum = 0
odd = []
even = []

for i in range(7):
    num = int(input())
    if num % 2 != 0:
        sum += num
        odd.append(num)
    else:
        even.append(num)

if len(even) == 7:
    print(-1)
else:
    print(sum, min(odd), sep='\n')

- 먼저 입력 받은 홀수들의 합과 최솟값을 따로 출력하기 위해 sum 변수를 0으로 초기화하고 각각 odd, even이라는 이름의 홀수와 짝수가 들어갈 배열을 생성했다.

7개의 자연수가 필요하기 때문에 7번 반복하며 정수(num)를 입력받도록 했다.

입력받은 정수 num에서 2로 나눈 나머지가 0이 아니면(=홀수이면) 그 수를 sum에 더하여 홀수들의 합을 구하도록 했고, append()를 사용하여 홀수인 수를 odd 배열에 추가했다.

입력받은 수가 짝수이면 even 배열에 추가하도록 했다.

마지막 출력을 할 때에도 조건문을 사용하여 짝수가 들어있는 배열의 길이가 7이면(=입력받은 7개의 수가 모두 짝수이면) -1을 출력하게 했고, 그렇지 않은 경우에는 홀수들의 합인 sum과 홀수 중에서의 최솟값을 출력하기 위해 min()을 사용하여 홀수들이 들어있는 배열 odd에서의 최솟값을 찾게했다.

'코딩테스트 문제풀이(Python)' 카테고리의 다른 글

백준 10872번 문제풀이  (0) 2022.05.01
백준 5522번 문제풀이  (0) 2022.05.01
백준 2010번 문제풀이  (0) 2022.04.30
백준 10871번 문제풀이  (0) 2022.04.21
백준 10569번 문제풀이  (0) 2022.04.20