본문 바로가기
Algorithm/BackJoon

10817번: 세 수

by 꼬부기가우는소리 2023. 7. 4.
728x90

 

- 문제 사이트: https://www.acmicpc.net/problem/10817

 

10817번: 세 수

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

www.acmicpc.net

 

세 개의 정수가 주어졌을 때, 두번째로 큰 정수를 출력해주는 문제이다.

배열에 세 수를 입력받고 정렬해준 뒤, 두 번째 값을 출력해주도록 하였다.

 

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int n[3];
    cin >> n[0] >> n[1] >> n[2];
    sort(n, n + 3);
    cout << n[1] << "\n";
    return 0;
}

- 메모리: 2020 KB

- 시간: 0 ms

- 코드 길이: 184 B

 

정렬이 아니더라도, 직접 비교를 통해서도 구해줄 수 있다.

아래의 로직을 삼항 연산자 또는 if 문을 통해서 구현해주면 된다.

 

1) a > b && a > c 인 경우, a가 가장 큰 수이므로 b > c를 비교하여 더 큰 수를 출력

2) a > b && a < c 인 경우, a가 두번째로 큰 수이므로 a 출력

3) a < b && a > c 인 경우, a가 두번째로 큰 수이므로 a 출력

4) a < b && a < c 인 경우, a가 가장 작은 수이므로 b > c를 비교하여 더 작은 수를 출력

 

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    if (a > b)
    {
        if (a > c)
        {
            if (b > c)
                cout << b << endl;
            else
                cout << c << endl;
        }
        else
        {
            cout << a << endl;
        }
    }
    else
    {
        if (a > c)
        {
            cout << a << endl;
        }
        else
        {
            if (b > c)
                cout << c << endl;
            else
                cout << b << endl;
        }
    }
    return 0;
}

- 메모리: 2020 KB

- 시간: 0 ms

- 코드 길이: 606 B

 

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    cout << (a > b ? (a > c ? (b > c ? b : c) : a) : (a > c ? a : (b > c ? c : b))) << endl;
    return 0;
}

- 메모리: 2020 KB

- 시간: 0 ms

- 코드 길이: 225 B

 

'Algorithm > BackJoon' 카테고리의 다른 글

1269번: 대칭 차집합  (0) 2023.07.05
10816번: 숫자 카드 2  (0) 2023.07.04
24900번: 한별 찍기  (0) 2023.07.04
10815번: 숫자 카드  (0) 2023.06.28
11721번: 열 개씩 끊어 출력하기  (0) 2023.06.27

댓글