algorithm 헤더가 없음에도 불구하고 코드가 정상적으로 작동한다면, 다음과 같은 몇 가지 가능한 이유가 있을 수 있습니다.
다른 헤더 파일의 내부 포함(Inclusion): 사용 중인 C++ 표준 라이브러리의 구현 또는 다른 포함된 헤더 파일(<string>, <vector>)이 내부적으로 <algorithm>을 포함하고 있을 수 있습니다. 이는 표준에 따라 정의된 것은 아니며, 컴파일러 또는 표준 라이브러리의 구현에 따라 다를 수 있습니다.
컴파일러 확장(Extensions): 일부 컴파일러는 표준 라이브러리 함수를 다른 헤더 파일에 미리 선언하거나 특정 컴파일 플래그를 통해 자동으로 특정 헤더를 포함하는 등의 확장 기능을 제공할 수 있습니다.
사전 컴파일된 헤더(Precompiled Headers): 프로젝트 설정에서 사전 컴파일된 헤더를 사용하고 있을 경우, 그 헤더 파일에 <algorithm>이 포함되어 있을 수 있습니다.
그런데 이러한 경우는 표준을 따르지 않으므로, 이식성을 유지하고 의도하지 않은 동작을 피하기 위해서는 명시적으로 필요한 헤더 파일을 포함하는 것이 좋습니다. 만약 이 코드를 다른 컴파일러 또는 다른 시스템에서 컴파일하려 할 때 <algorithm> 헤더 파일이 포함되어 있지 않다면, 컴파일 오류가 발생할 가능성이 높습니다.
즉, 어디서든 코드가 문제 없이 작동하길 원한다면, 다음과 같이 <algorithm> 헤더를 명시적으로 포함시켜야 합니다.
#include<string>#include<vector>#include<algorithm> // min 함수를 사용하기 위해 필요usingnamespacestd;
vector<int> solution(int denum1, int num1, int denum2, int num2){
// ...int denum = (denum1 * num2) + (denum2 * num1);
int num = num1 * num2;
for(int i = min(denum, num); i >= 2; i--) {
// ...
}
// ...
}
algorithm 헤더가 없음에도 불구하고 코드가 정상적으로 작동한다면, 다음과 같은 몇 가지 가능한 이유가 있을 수 있습니다.
그런데 이러한 경우는 표준을 따르지 않으므로, 이식성을 유지하고 의도하지 않은 동작을 피하기 위해서는 명시적으로 필요한 헤더 파일을 포함하는 것이 좋습니다. 만약 이 코드를 다른 컴파일러 또는 다른 시스템에서 컴파일하려 할 때 <algorithm> 헤더 파일이 포함되어 있지 않다면, 컴파일 오류가 발생할 가능성이 높습니다.
즉, 어디서든 코드가 문제 없이 작동하길 원한다면, 다음과 같이 <algorithm> 헤더를 명시적으로 포함시켜야 합니다.
#include <string> #include <vector> #include <algorithm> // min 함수를 사용하기 위해 필요 using namespace std; vector<int> solution(int denum1, int num1, int denum2, int num2) { // ... int denum = (denum1 * num2) + (denum2 * num1); int num = num1 * num2; for(int i = min(denum, num); i >= 2; i--) { // ... } // ... }