Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 삼항 연산자로 최댓값 찾기: 2개, 3개, 4개 숫자 비교 프로그램

이 문제에서는 여러 개의 숫자가 주어지며, C++의 삼항 연산자(ternary operator)를 사용해 가장 큰 수를 찾는 프로그램을 작성하는 것이 목표입니다.

주어지는 숫자의 개수는 다음과 같이 세 가지 경우로 나눌 수 있습니다.

  • 두 개의 숫자
  • 세 개의 숫자
  • 네 개의 숫자

문제 설명 — 두 개, 세 개 또는 네 개의 숫자가 주어졌을 때, if문 대신 삼항 연산자만을 활용하여 그중 최댓값을 구해야 합니다.

예시를 통해 문제를 이해해 보겠습니다.

두 개의 숫자

입력 — 4, 54

출력 — 54

세 개의 숫자

입력 — 14, 40, 26

출력 — 40

네 개의 숫자

입력 — 10, 54, 26, 62

출력 — 62

해결 접근 방법

삼항 연산자는 조건식 ? 참일 때 값 : 거짓일 때 값 형태로 작성하며, 조건문을 한 줄로 간결하게 표현할 수 있습니다. 이를 중첩하면 세 개 이상의 숫자도 비교할 수 있습니다.

두 개의 숫자 (a, b) 비교

a > b ? a : b

세 개의 숫자 (a, b, c) 비교

(a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c)

a와 b 중 큰 값을 먼저 골라낸 뒤, 그 값과 c를 다시 비교하는 방식입니다.

네 개의 숫자 (a, b, c, d) 비교

(a > b && a > c && a > d) ? a :
(b > c && b > d) ? b :
(c > d) ? c : d

a가 나머지 세 수보다 모두 크면 a가 최댓값이고, 그렇지 않으면 b, c, d를 순차적으로 비교하여 최댓값을 결정합니다.

두 개의 숫자 비교 예제 코드

#include <iostream>
using namespace std;
int main() {
    int a = 4, b = 9;
    cout << "두 수 중 더 큰 값은 " << ((a > b) ? a : b);
    return 0;
}

출력 결과

두 수 중 더 큰 값은 9

세 개의 숫자 비교 예제 코드

#include <iostream>
using namespace std;
int findMax(int a, int b, int c) {
    int maxVal = (a > b) ?
    ((a > c) ?
    a : c) :
    ((b > c) ?
    b : c);
    return maxVal;
}
int main() {
    int a = 4, b = 13, c = 7;
    cout << "세 수 중 더 큰 값은 " << findMax(a, b, c);
    return 0;
}

출력 결과

세 수 중 더 큰 값은 13

네 개의 숫자 비교 예제 코드

#include <iostream>
using namespace std;
int findMax(int a, int b, int c, int d) {
    int maxVal = ((a > b && a > c && a > d) ? a : (b > c && b > d) ? b : (c > d) ? c : d);
    return maxVal;
}
int main() {
    int a = 4, b = 13, c = 7, d = 53;
    cout << "네 수 중 더 큰 값은 " << findMax(a, b, c, d);
    return 0;
}

출력 결과

네 수 중 더 큰 값은 53

마무리

삼항 연산자를 중첩하면 if-else 문 없이도 간결하게 최댓값을 구할 수 있습니다. 다만 중첩이 깊어질수록 가독성이 떨어질 수 있으므로, 네 개 이상의 값을 비교할 때는 함수로 분리하거나 적절한 줄바꿈과 괄호를 사용해 코드를 정리하는 것이 좋습니다.