[백준 BOJ] 11004번 K번째 수 (C++/cpp)

2022. 8. 19. 14:19PS (Program Solving)/BOJ (백준)

문제 설명

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

 

11004번: K번째 수

수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

백준 BOJ 11004번 K번째 수 문제 사진

 

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

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

해당 문제는, 특정 입력값들에 대하여 오름차순 정렬을 하였을 때 이에 관한 K번째 숫자를 출력해야 하는 문제이다.

이 문제는 입력값이 많아질 수도 있는 문제이기 때문에 조금 어렵게 다가올 수도 있는 문제이다.

다만 sort() 함수만 사용할 수 있다면 이렇게 많은 값들에 대한 정렬도 손쉽게 해결할 수 있다.

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

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

 

코드의 실행 순서

1) 입력값들을 저장할 배열(arr)을 전역 변수로 선언해둔다.

 

2) 입력값의 개수(n)와 정답을 구하고자 하는 숫자의 순번(a)을 입력받는다.

 

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

 

4) sort() 함수를 이용하여 arr의 배열값들을 오름차순으로 정렬한다.

 

5) 오름차순 정렬이 완료되었다면, a-1번의 배열값을 출력한 뒤 실행 종료한다.

(배열 번호는 0번부터 시작하여 n-1번으로 끝나기 때문에 본래 구하고자 하는 순번에 1을 뺀 번호로 탐색해야 한다.)

반응형

 

성공한 코드

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

//백준 11004번 코드
int arr[5000001];
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int n, a;
	cin >> n >> a;
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}
	sort(arr, arr + n);

	cout << arr[a - 1] << endl;
}

 

제출 결과

백준 BOJ 11004번 K번째 수 문제 C++ 제출 결과

(2022.07.29 백준 11004번 문제 제출 결과)

반응형