문제
7개의 자연수가 주어질 때, 짝수만 골라 그 합과 최솟값을 구하라.
입력
첫째 줄에 테스트 케이스 수 T, 이후 T줄에 7개의 자연수가 주어진다.
출력
각 테스트 케이스마다 짝수의 합과 최솟값을 출력한다.
예제
| 입력 | 출력 |
|---|---|
1 1 2 3 4 5 6 7 | 12 2 |
풀이
7개의 수를 순회하며 짝수인 경우 합과 최솟값을 갱신한다.
- 7개의 수를 입력받으며 2로 나누어떨어지는지 확인한다
- 짝수이면 합에 더하고 현재 최솟값보다 작으면 갱신한다
- 각 테스트 케이스마다 결과를 출력한다
핵심 아이디어: 7개 고정이므로 단순 순회로 O(1)에 해결된다.
코드
#include <iostream>
using namespace std;
int main()
{
int n, a[7], sum, min;
cin >> n;
while (n--)
{
sum = 0;
min = 101;
for (int i = 0; i < 7; i++)
{
cin >> a[i];
if (a[i] % 2 == 0)
{
sum += a[i];
if (a[i] < min)
min = a[i];
}
}
cout << sum << ' ' << min << '\n';
}
}복잡도
- 시간: O(T) (T: 테스트 케이스 수, 각 7개 고정)
- 공간: O(1)