정수 a, b, c, d 네 개가 주어졌을 때, 이들 중에서 가장 큰 값을 직접 작성한 함수를 이용해 찾아야 한다고 가정해 보겠습니다. 이를 위해 두 개의 숫자를 입력받아 더 큰 값을 반환하는 max() 함수를 하나 만들고, 이 함수를 조합하여 네 수 전체의 최댓값을 구하는 방식으로 문제를 해결할 수 있습니다.
예를 들어 입력이 a = 75, b = 18, c = 25, d = 98이라면, 출력 결과는 98이 됩니다.
문제 해결 접근 방법
이 문제는 다음 단계에 따라 해결할 수 있습니다.
- 두 개의 값 x와 y를 매개변수로 받는
max()함수를 정의합니다. - x와 y 중 더 큰 값을 반환합니다.
- 네 개의 숫자 a, b, c, d를 준비합니다.
left_max := max(a, b)— 앞의 두 수 중 큰 값을 구합니다.right_max := max(c, d)— 뒤의 두 수 중 큰 값을 구합니다.final_max = max(left_max, right_max)— 두 결과를 비교하여 최종 최댓값을 구합니다.final_max를 반환합니다.
이처럼 두 수씩 짝지어 비교하면 네 수의 최댓값도 간단하게 구할 수 있습니다. 이 방식은 비교 횟수가 고정되어 있어 로직이 명확하고 확장성도 좋다는 장점이 있습니다.
예제 코드
다음 구현 예시를 통해 더 자세히 이해해 보겠습니다.
#include <iostream>
using namespace std;
int max(int x, int y){
if(x > y){
return x;
}else{
return y;
}
}
int main(){
int a = 75, b = 18, c = 25, d = 98;
int left_max = max(a, b);
int right_max = max(c, d);
int final_max = max(left_max, right_max);
cout << final_max;
}
입력
75, 18, 25, 98
출력
98
코드 설명
max() 함수는 if-else 조건문을 사용해 두 인자 중 더 큰 값을 판별하여 반환합니다. main() 함수에서는 먼저 (a, b)와 (c, d)를 각각 비교한 뒤, 그 결과인 left_max와 right_max를 다시 한 번 비교하여 최종 최댓값을 얻습니다. 참고로 C++ 표준 라이브러리에는 이미 std::max()가 포함되어 있으므로, 실무에서는 별도의 함수를 정의하지 않고 이를 활용하는 것이 일반적입니다.