본문 바로가기

Algorithm

[백준] 10817번 : 세 수 - C/C++

728x90

 

문제를 보자마자 어떻게 풀어야할지 생각이 딱 난다면,,,

그건 구현 문제일 가능성이 크다.

(정말 개인적인 생각)

 

문제에서 말하는 대로 따라가면 지난번 글과 같이 쉽게 해결 가능하다.

 

두 가지 방식으로 위의 문제는 해결 가능하다.

 

1. int형으로 정수 A,B,C 입력 받아서 비교하기

2. int형의 배열에 값 입력받아서 정렬 후 비교하기

 

다른 방법이 있을 수 있겠다만 나는 두 가지 밖에 생각이 안 났다.

 

 

문제에서 두 번째로 큰 정수를 출력하라고 했다.

1번 방식으로 풀게 되면 if문을 사용해서 수를 직접 비교해야겠지만,

2번 방식으로 풀게 되면 정렬해서 풀 수 있다.

 

나는 복잡한 건 싫다.

내장함수를 최대한 활용하겠다.

2번 방식으로 풀어보자.

 

배열에 값 입력하기

int ary[3];
    
for(int i=0;i<3;i++){
    cin >> ary[i];
}

 

sort()를 통해 정렬하기

sort(ary,ary+3);

 

그리고 두 번째로 큰 정수를 출력해야하는데

지난 글에서도 말했지만 C++의 기본 정렬은 quick sort(퀵 정렬)이다.

그럼 출력할 때 몇 번째 원소를 출력해야 할까.

 

ary[1], 원소를 출력하면 된다.

 

3개의 수만 입력되어있는 배열에서 두 번째로 큰 수는

당연히 1번지에 들어있다.

 

 

 

전체 코드

#include <iostream>
#include <algorithm>

//세 수
using namespace std;

int main(){
    int ary[3];
    
    for(int i=0;i<3;i++){
        cin >> ary[i];
    }
    sort(ary,ary+3);
    cout << ary[1] << '\n';
}

 

 

브론즈3 난이도의 문제였다.

나도 쉽게 풀었으니, 모두가 쉽게 풀렸을 문제라고 생각한다.

 

꾸준하게 더 많은 문제들을 접하고 해결하고 싶다.

 

 

 

 

더 좋은 풀이가 있다면 댓글로 알려주세요 !!

피드백 환영입니다☺️

728x90