[백준 BOJ] 3058번 짝수를 찾아라 (C++/cpp)

2022. 8. 28. 01:09PS (Program Solving)/BOJ (백준)

문제 설명

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

 

3058번: 짝수를 찾아라

입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성되어 있고, 7개의 자연수가 공백으로 구분되

www.acmicpc.net

백준 BOJ 3058번 짝수를 찾아라 문제 사진

 

접근 방법 - 나머지 연산자를 응용한 연산 문제

백준의 3058번 문제는 나머지 연산자를 사용하여 해결해야 하는 연산 문제이다.

해당 문제는, 각 테스트 케이스의 입력값들에 대하여 짝수들의 합과 그들 중 최솟값을 출력해야 하는 문제이다.

이 문제의 핵심은 짝수인지 홀수인지에 대한 연산을 하는 방법에 달려있다.

그리고 이 연산을 하는 데에는 나머지 연산자를 필수로 사용해야 한다.

이에 대한 연산이 능숙하다면 해당 문제를 해결하는 데에는 큰 어려움이 없었을 것으로 예상된다.

다만 해결에 어려움을 겪고 있다면, 아래의 코드와 설명을 한번 참고해보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 테스트 케이스의 수(n)를 입력받는다.

 

2) n의 크기만큼 반복문을 수행하여 아래의 연산을 취한다.

- 짝수들의 합을 저장할 변수 sum을 0으로 초기화하여 선언한다.

잇따라, 짝수들 중의 최솟값을 저장할 변수 min을 100으로 초기화하여 선언한다.

(입력값들 중 최댓값이 99이기 때문에, 최솟값 연산을 원활히 하기 위하여 min의 초기값을 100으로 설정하였다.)

- 다른 반복문을 통하여, 테스트 케이스에 대한 값들을 하나씩 입력받는다.

만일 현재 입력값이 짝수로 판별된다면, sum에 해당 입력값을 더한다.

또한, 현재의 min값보다 현재 입력값이 더 작다면 min값을 해당 입력값으로 저장한다.

- 모든 연산이 끝났다면, 최종적으로 저장된 sum과 min을 순차적으로 출력하고 다음 테스트 케이스에 대한 연산을 수행한다.

 

3) 모든 테스트 케이스의 연산이 완료되었다면, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 3058번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		int a;
		int sum = 0;	int min = 100;
		for (int j = 0; j < 7; j++) {
			cin >> a;
			if (a % 2 == 0) {
				sum += a;
				if (a < min) { min = a; }
			}
		}
		cout << sum << " " << min << endl;
	}
}

 

제출 결과

백준 BOJ 3058번 짝수를 찾아라 문제 C++ 제출 결과

(2022.06.05 백준 3058번 문제 제출 결과)

반응형