정신과 시간의 방
카테고리
작성일
2024. 8. 17. 21:27
작성자
risehyun
  • 문제

 

  • 풀이
#include <iostream>

using namespace std;

void Swap(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}

int main()
{
	int n = 0, k = 0;
	int input[1000] = { 0 };

	cin >> n >> k;

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

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n - 1; j++)
		{
			if (input[j] > input[j + 1])
			{
				Swap(input[j], input[j+1]);
			}
		}
	}

	// 끝에서부터 k번째 인덱스에 해당하는 값을 출력해야 하므로 
	// 최종 결과값은 n - k번째 값이 된다.
	int result = input[n - k];

	cout << result;

	return 0;
}

 

  • 메모
    입력 받은 값을 오름차순 한 뒤 뒤에서부터 K번째에 해당하는 값(n - k)을 출력한다.
    메모리 제한이 1024MB이고 N의 최대 범위가 1000까지로 크지 않기 때문에 동적할당 하지 않고 배열에 입력받아 사용했다.