티스토리 뷰

Algorithm/BOJ

백준 2693번 C++

poopooreum 2023. 8. 11. 11:25
반응형
백준 2693번 N번째 큰 수

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

2693번: N번째 큰 수

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

www.acmicpc.net




정답 코드

#include<iostream>
using namespace std;
int arr[10];
int n = 10;
int num;
int main() {
	cin >> num;
	for (int x = 0; x < num; x++) {
		for (int x = 0; x < n; x++)
			cin >> arr[x];
		for (int x = 1; x < n; x++) {
			int c = x;
			do {
				int root = (c - 1) / 2;
				if (arr[root] < arr[c]) {
					int temp = arr[root];
					arr[root] = arr[c];
					arr[c] = temp;
				}
				c = root;
			} while (c != 0);
		}
		for (int x = n - 1; x >= 0; x--) {
			int temp = arr[0];
			arr[0] = arr[x];
			arr[x] = temp;
			int root = 0;
			int c = 1;
			do {
				c = 2 * root + 1;
				if (arr[c] < arr[c + 1] && c < x - 1)
					c++;
				if (arr[root] < arr[c] && c < x) {
					int temp = arr[root];
					arr[root] = arr[c];
					arr[c] = temp;
				}
				root = c;
			} while (c < x);
		}
		cout << arr[7]<<"\n";
	}
}


문제 풀이

힙 정렬을 이용해서 풀었습니다. 힙 정렬은 힙 구조를 이용하는 것인데 트리 구조에서 사용합니다.

힙 정렬 더 알아보기

반응형

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

백준 2720번 C++  (0) 2023.08.11
백준 2711번 C++  (0) 2023.08.11
백준 2675번 C++  (0) 2023.08.11
백준 2667번 C++  (0) 2023.08.10
백준 2609번 C++  (0) 2023.08.10
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함