본문 바로가기

Algorithm

[백준] 2693번 : N번째 큰 수 - C/C++

728x90

 

문제를 읽고 해결 과정을 순차적으로 생각해 보았다.

 

1. 입력받고자하는 테스트 케이스 N 입력

2. 크기가 10인 배열 선언

3. 반복문을 돌면서 배열에 값 넣기

4. 오름차순 혹은 내림차순으로 정렬

5. 결과 출력

 

 

 

 

문제 풀이 시작.

  • 테스트 케이스 입력과 크기 10인 배열 선언
  • 고정된 크기의 배열 ary
int n;
int ary[10];

 

 

반복문을 돌며 배열에 값은 입력하면 아래와 같다.

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

 

 

배열에 값을 입력했으니, 정렬을 해야한다.

정렬은 sort( , , ) 를 통해 구현할 수 있으며,

c++에서의 sort는 quick sort(퀵 정렬)로 설정되어있다.

#include <algorithm>
...
sort(ary,ary+10);

 

기본이 오름차순이기 때문에 우리는 출력할 때 주의해야한다.

 

3번째로 큰 수를 출력해야하기 때문에

배열 기준 ary[7] 7번째 수를 출력해야한다.

cout << ary[7] << '\n';

 

이렇게 코드를 작성할 수 있게 된다.

 

 

 

 

전체 코드

#include <iostream>
#include <algorithm>

//N번째 큰 수
using namespace std;

int n;
int ary[10];

int main(){
    cin >> n;

    for (int i=0;i<n;i++) {
        for (int j=0;j<10;j++) {
            cin >> ary[j];
        }
        sort(ary,ary+10);
        cout << ary[7] << '\n';
    }
}

 

 

 

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

배열을 정렬할 수 있는지를 물어보는 문제였던 것 같다.

 

근데,, 나는 결과값이 한번에 나오도록 하고 싶은데

내가 작성한 코드는 테스트 케이스1 배열의 입력을 완료하면, 바로 결과값이 나오고

테스트 케이스2 배열의 입력 완료 시 바로 결과가 나오게 되는..

이런 형태로 출력이 되는데

다른 방법이 떠오르지 않아서 입력에 대한 출력은 제대로 나오는건 맞으니까 제출했다.

이런식의 입출력 문제가 많이 발생했었는데, 항상 통과는 되더라.

왜일까?

 

 

 

 

 

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

피드백 환영입니다☺️

728x90