IT 프로그래밍/객체지향프로그래밍

[C++] Finding the Smallest Positive Integer

기술1 2024. 4. 17. 20:32
반응형

 

#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으로 될 것이기 때문에 이렇게 깔끔하게 처리를 할 수 있습니다.

 

반복문을 통해 양수 중에서 가장 작은 값을 찾고 배열을 사용하지 않고 변수를 찾습니다. 교수님의 풀이고 훨씬 간단하고 효율적인 풀이입니다. 

반응형