PS (C, C++)

[백준/C & C++] 2576 홀수

최연재 2022. 9. 19. 04:08

https://www.acmicpc.net/problem/2576

 

2576번: 홀수

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

www.acmicpc.net

코드

C

#include <stdio.h>

int main()
{
	int arr[7], count=0, min = 101, sum=0;
	for (int i = 0; i < 7; i++)
	{
		scanf("%d", &arr[i]);
		if (arr[i] % 2 == 1)
		{
			count++;
			sum += arr[i];
			if (min > arr[i]) min = arr[i];
		}
	}

	if (count == 0) printf("-1");
	else printf("%d\n%d", sum, min);

	return 0;
}

C++

#include <iostream>
using namespace std;

int main()
{
	int arr[7], sum=0, min=101;
	for (int i = 0; i < 7; i++)
	{
		cin >> arr[i];
		if (arr[i] % 2 == 1)
		{
			sum += arr[i];
			if (min > arr[i]) min = arr[i];
		}
	}

	if (sum == 0) cout << "-1";
	else cout << sum << "\n" << min;
	return 0;
}

코드 설명

7개의 숫자를 입력받아서 홀수의 합을 구하고 홀수의 최솟값을 구하면 된다. 

 

반복문을 돌면서 숫자를 입력받고 입력받은 값이 홀수인지 판단한 다음 홀수라면 sum에 더해나가고, if문을 통해 최솟값인지 여부를 판단한다. 입력받은 값이 지금까지 입력된 홀수 중 최솟값이라면 최솟값을 지금 입력받은 값으로 변경한다.

 

sum이 0이라는 것은 홀수 입력이 없었다는 것이므로 -1을 출력하고, 그렇지 않은 경우에는 sum과 min을 조건에 맞게 출력한다. 

느낀 점

반복문 내에서 바로바로 sum과 min을 구해나가는 방식을 써서 금방 풀었다!

'PS (C, C++)' 카테고리의 다른 글

[백준/C & C++] 2798 블랙잭  (2) 2022.10.04
[백준/C & C++] 5354 J박스  (0) 2022.10.04
[백준/C & C++] 1233 주사위  (0) 2022.09.19
[백준/C & C++] 3034 앵그리 창영  (0) 2022.09.15
[백준/C & C++] 2577 숫자의 개수  (0) 2022.09.15