본문 바로가기

백준/C++

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

728x90

 

 

 

시험 끝~~~

 

으으.. 너무 졸리다...

오늘은 머리가 좀 아파서 간단한 것을 풀어야겠다.

 

 

 

문제

https://www.acmicpc.net/problem/2693

 

2693번: N번째 큰 수

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000

www.acmicpc.net

 

처음에 봤을 때는 뭔가 어려워 보였는데 막상 문제를 읽어보니 엄청 쉬웠다.

일단 몇개의 케이스가 있는지 개수를 입력받고 while문을 그 수만큼 반복해 주도록 한다. while문 안에서는 크기가 10인 배열에 입력을 받아 sort를 이용해 내림차순으로 정렬해 준다. 여기서 내림차순은 greater <int>()를 이용하면 된다. 그리고 3번째로 큰 수를 찾아야 하니 3번째의 인덱스인 2를 넣어 출력해 준다.

 

 

 

 

#include <iostream>
#include <algorithm>

using namespace std;

int A[10];
int n = 2;	//3번째 인덱스

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	int T;
	cin >> T;
	while (T--) {
		for (int i = 0; i < 10; i++) {
			cin >> A[i];
		}
		sort(A, A + 10, greater<int>());	// greater<int>()에서 () 잊지 말기!!
		cout << A[n] << "\n";
	}
	
	return 0;
}

 

 

 

중간에 내림차순을 할 때 ()를 빼먹어서 당황했지만 확실히 어려운 것부터 하면 이런 문제는 쉽게 풀 수 있는 것 같다.

 

 

 

 

 

다른 풀이를 찾아보니 오름차순으로 정렬하여 인덱스를 해당 인덱스로 바꿔서 푸신 분도 있었다.

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

int main() {
	int testcase;
	int arr[10] = { 0, };
		
	cin >> testcase;	// 테스트케이스의 갯수
	for (int j = 0; j < testcase; j++) {
		for (int i = 0; i < 10; i++) {
			cin >> arr[i];
		}
		sort(arr, arr + 10);
		// 8번째 수 출력 (배열은 0부터 시작하므로 7)
		cout << arr[7] << endl;
	}

	return 0;
}
출처: https://beginnerdeveloper-lit.tistory.com/23 [초보 개발자의 이야기, 릿허브:티스토리]

 

 

 

 

 

이 분은 N에 3을 그대로 넣고 오름차순으로 정렬한 후 총개수에서 이 N을 빼서 인덱스로 넣어주었다.

오호... 난 이 생각을 못했다... 10에서 N을 빼면 N을 그대로 3을 넣어도 되는구나...ㅎㅎ

//2693 N번쨰 큰수
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int A[10];
	int N = 3;
	int num = 0; 
	cin >> num;

	for (int i = 0; i < num; i++) {
		for (int j = 0; j < 10; j++) {
			cin >> A[j];
		}
		sort(A, A + 10);
		cout << A[10 - N] << endl;
	}
	return 0;
}
출처: https://se-jung-h.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98C-%EB%B0%B1%EC%A4%80-2693-N%EB%B2%88%EC%A7%B8-%ED%81%B0%EC%88%98

 

 

요즘 날씨가 추워서 그런지 머리가 멍하고 아프다...

 

다들 몸 조심하세요...

비록 밖은 춥지만 우리의 하루하루는 따뜻하기를...

 

728x90

'백준 > C++' 카테고리의 다른 글

[C++] 백준 1083번 소트  (2) 2023.12.21
[C++] 백준 2776번 암기왕  (4) 2023.12.20
[C++] 백준 1946번 신입 사원  (2) 2023.12.18
[C++] 백준 2587번 대표값2  (2) 2023.12.17
[C++] 백준 1931번 회의실 배정  (2) 2023.12.16