반응형
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N;
int arr[100];
int min = -1;
int count = 0;
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
for (int i = 0; i < N; i++)
{
if (arr[i] > 0)
{
if (arr[i] < min)
{
min = arr[i];
count++;
}
}
}
if (count != 0)
{
cout << min << endl;
}
else
cout << -1 << endl;
}
저 같은 경우는 배열을 통해 비교를 해주었습니다. 먼저 해당하는 수들을 입력을 받은 후 진행해주었으며 for문을 통해서 최소값을 찾습니다.
교수님 풀이
#include <iostream>
using namespace std;
int main() {
int n, k;
cin >> n;
int positive_min = -1;
for (int i=0; i<n; i++) {
cin >> k;
if (k >= 0 && (positive_min == -1 || k < positive_min))
positive_min = k;
}
cout << positive_min << endl;
return 0;
}
사용자 정수 n을 입력 받습니다. 그리고 positive_min은 -1로 초기화합니다.
교수님 같은 경우 for문 하나에서 해결을 하셨습니다. cin >> k를 입력을 받은 후 if문을 통해 k가 0보다 크고 positive_min이 -1이거나 k 가 positive_min보다 작을 때 positive_min = k;로 해주었습니다. 만약 모든 k가 0보다 작은 경우 if문은 -1로 나오게 될 것이며 처음 양수가 있을 경우에 k는 바로 positive_min으로 될 것이기 때문에 이렇게 깔끔하게 처리를 할 수 있습니다.
반복문을 통해 양수 중에서 가장 작은 값을 찾고 배열을 사용하지 않고 변수를 찾습니다. 교수님의 풀이고 훨씬 간단하고 효율적인 풀이입니다.
반응형
'IT 프로그래밍 > 객체지향프로그래밍' 카테고리의 다른 글
[C++] 12번 (0) | 2024.04.17 |
---|---|
[C++]음이 아닌 정수 중 최소값 출력, 이진수 변환 출력 (0) | 2024.04.17 |
[C++] 세 정수 오름차순 정렬 (0) | 2024.04.17 |
[c++] 하나의 정수 n을 받은 후 합을 구하는 프로그램 (0) | 2024.04.17 |
[C++] 양의 정수 n을 받은 후 합을 구하는 프로그램 (0) | 2024.04.17 |