[백준 BOJ] 2693번 N번째 큰 수 (C++/cpp)

2022. 8. 21. 00:47PS (Program Solving)/BOJ (백준)

문제 설명

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

 

2693번: N번째 큰 수

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

www.acmicpc.net

백준 BOJ 2693번 N번째 큰 수 문제 사진

 

접근 방법 - 정렬의 기본 문제

백준의 2693번 문제는 정렬에 있어 기본적인 문제이다.

해당 문제는, 각 테스트 케이스의 입력값들에 대하여 3번째로 큰 숫자를 출력해야 하는 문제이다.

정렬 함수만 잘 사용할 수 있다면 이 문제도 쉽게 해결할 수 있을 것으로 예상된다.

혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면, 아래의 설명과 코드를 한번 참고해보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 테스트 케이스의 수(n)를 입력받는다.

 

2) n의 크기만큼 반복문을 수행하여 아래의 연산을 취한다.

- 각 테스트 케이스에 대한 입력값들을 저장할 배열(arr)을 선언해둔다.

- arr의 값들을 하나씩 입력받는다.

- sort() 함수를 통해, arr의 배열값들에 대하여 오름차순 정렬을 수행한다.

- 정렬이 완료된 상태라면, 3번째로 큰 숫자는 곧 배열의 7번에 있는 값을 가리킨다.

따라서, arr[7]의 값을 출력한 뒤 다음 테스트 케이스를 수행하도록 한다.

 

3) 모든 테스트 케이스에 대한 연산이 수행되었다면, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <algorithm>
#define endl '\n'
using namespace std;

//백준 2693번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

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

 

제출 결과

백준 BOJ 2693번 N번째 큰 수 문제 C++ 제출 결과

(2022.06.10 백준 2693번 문제 제출 결과)

반응형