Deep Learning through deep learning

백준 25305번 커트라인 본문

Baekjoon_algorithm_heuristic

백준 25305번 커트라인

NeuroN 2023. 2. 8. 13:30

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

문제 해석

더보기

본격적으로 sort 함수를 사용해볼 것이다. 이전에 정렬 알고리즘 구현에 사용했던 2중 for문 코드도 첨부하며, 이때 배열의 값들을 서로 바꿔주기 위해 사용했던 swap변수를 swap함수( 마찬가지로 STL)를 이용해볼 것이다.
문제는 첫번째 줄에 시험 응시자 N명이 주어지고, 상을 받을사람 k명이 주어진다.
두번째 줄에는 N명만큼의 사람들의 성적이 주어지고 성적이 높은사람 중 k명만 상을 받으니 k번째 상을 받는 사람의 성적이 커트라인이 된다.
N,k 변수를 각각 할당하고 (코드에선 a,b)
for문을 이용해 배열, 벡터를 입력받아 각각의 점수를 저장한다.
원래의 정렬 알고리즘 이었다면 2중 for문을 사용하여 배열의 길이만큼 두번 반복해주는 버블정렬 알고리즘을 사용하였다.
for문에 각각 i,j가 있다면, 배열이름[i], 배열이름[j]를 비교해 둘의 위치를 변경할지 정하면 된다.
배열의 원소의 위치를 바꾸기 위해서는 swap이라는 변수를 할당하여 배열이름[i]에 변수 값만 저장해두고 값만 빼오는 방식인데,

STL에서는 swap(숫자1,숫자2) 라는 함수만으로 숫자1,숫자2의 위치를 바꿔줄 수 있다.
STL 함수에서 sort함수는 배열,벡터를 정렬해주기 위해 사용하며 default값은 오름차순이다.
배열의 경우, sort(배열이름,배열이름 + 숫자) 형식으로 사용한다. 배열의 시작점에서 +숫자만큼까지 오름차순으로 정렬해주겠다는 의미이다.
벡터의 경우, sort(벡터이름.begin(),벡터이름.end()) 형식으로 사용한다. 벡터의 시작점(begin)에서 마지막까지(end) 오름차순으로 정렬해주겠다는 의미이다.

이렇게 배열을 정렬하고 출력값으로는 배열의 끝 인덱스인 배열이름[배열이름.size()] 에서 k번째만큼 뺀 인덱스가 상을 받는 커트라인 점수가 된다. 배열이름[배열이름.size()-k]

정답 코드

#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int a, b; cin >> a >> b;
	vector<int> k;
	int k_input;

	for (int i = 0; i < a; i++)
	{
		cin >> k_input;
		k.push_back(k_input);
	}

	sort(k.begin(), k.end());
	// 아래는 원래 정렬 알고리즘 구현 코드

	//for (int i = 0; i < k.size(); i++)
	//{
	//	for (int j = i; j < k.size(); j++)
	//	{
	//		if (k[i] > k[j])
	//		{
	//			swap(k[i], k[j]);

	//			// 아래는 원래 swap 변수 위치 바꾸기 구현 코드

	//			/*int swap = 0;
	//			swap = k[i];
	//			k[i] = k[j];
	//			k[j] = swap;*/

	//		}
	//	}
	//}

	cout << k[k.size() - b];
}

'Baekjoon_algorithm_heuristic' 카테고리의 다른 글

백준 7567번 그릇  (0) 2023.02.08
백준 10988번 팰린드롬인지 확인하기  (0) 2023.02.08
백준 10817번 세 수  (0) 2023.02.08
백준 2566번 최댓값  (0) 2023.02.02
백준 2587번 대표값2  (0) 2023.02.02