반응형

벡터를 선언하고
입력을 받을 때 바로 홀수인지 판단하고
홀수이면 sum값에 더해주고 vector에 값 추가해주었다
홀수가 존재하는 않는 경우는 vector의 길이가 0인 경우로 처리했고
최솟값은 min_element을 사용해봤는데 min_element 함수는 주소처럼 사용되는 반복자(iterator)를 반환하기에
"*"를 붙여서 역참조를 해줘야 우리가 원하는 값을 얻을 수 있다
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> arr;
int sum = 0;
for (int tmp=0; tmp<7; tmp++)
{
int a;
cin >> a;
if (a%2 != 0)
{
sum += a;
arr.push_back(a);
}
}
if (arr.size() == 0) cout << -1;
else {
cout << sum << "\n";
cout << *min_element(arr.begin(), arr.end());
}
return 0;
}
하지만 min_element를 쓰지 않고
문제에서 주어지는 자연수는 100보다 작다라고 했기때문에
min변수를 선언하고 값을 100으로 선언해주면 if문 활용해서
최솟값을 구할 수도 있다.
참고로
if (x & 1) {
odd += 1;
sum += x;
}
홀수의 이진수는 맨 오른쪽 자릿수가 1이라는 점을 이용하여
비트연산자 & 를 이용하여 홀수를 판정하는 방법도 있다.
반응형
'algorithm > 기초 코드' 카테고리의 다른 글
| [algorithm] 백준 2309번 일곱난쟁이 (0) | 2025.10.18 |
|---|---|
| [algorithm] 백준 2587번 대표값2 (0) | 2025.10.18 |
| [algorithm] 백준 2490번 윷놀이 (0) | 2025.10.18 |
| [algorithm] 백준 10093번 숫자 (0) | 2025.10.12 |
| [algorithm] 백준 2480번 주사위 세개 (0) | 2025.10.12 |
