본문 바로가기

백준/C++

[C++] 백준 11004번 k번째

728x90

친구와 점심을 먹고 도서관에 왔다...

하기 싫다... 비도 오고 그래서(이게 무슨 상관)

 

 

 

 

 

 

 

오늘의 문제는 뭘까~~~~요?

그림판으로 그려서 엉망..

 

 

 

 

바로바로~~

 

 

 

문제

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

 

11004번: K번째 수

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

www.acmicpc.net

음.. 그러면 일단 벡터에 입력받고 sort를 이용하여 오름차순으로 정렬해 줘야겠다. 그런 다음에 k번째의 인덱스를 이용해 출력해 주면 될 것 같다.

 

 

그럼 고~~

 

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

vector <int> num;

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

	int n,k,a;
	cin >> n >> k;
	for (int i = 0; i < n; i++) {
		cin >> a;
		num.push_back(a);
	}
	sort(num.begin(), num.end());

	cout << num[k - 1] << "\n";

	return 0;
}

ㅎㅎ

 

 

처음에 이걸 안 썼더니 시간초과가 발생하였다.

ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

 

입출력이 많을 때는 사용하자~!

 

다시 한번 정리해야겠다.

 

printf, scanf와 비교했을 때 속도가 현저히 느린 cin, cout의 속도 높이는 방법

- ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 사용

- endl보다 \n 이 빠름

 

주의할 점

- scanf, printf와 섞어 사용하지 않기

- 싱글 스레드 환경에서만 사용하기(실무에서는 사용하지 말 것)

[참고] https://algwang.tistory.com/10

 

 

이번 문제는 간단했기 때문에 printf와 scanf로 푼 사람의 코드를 보았다.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool compare(int x, int y) {
	return x < y;
}
int main(void) {
	int N, K;
	scanf("%d %d", &N, &K);
	vector<int> v(N, 0);
	for (int i = 0; i < N; i++) {
		scanf("%d", &v[i]);
	}
	sort(v.begin(), v.end(), compare);
	
	printf("%d\n", v[K-1]);
}
출처: https://seoftware.tistory.com/89

 

확실히 cin, cout이 편하기는 하지만 scanf와 printf도 많이 사용해야겠다.

이번 문제는 여기까지 하고 map과 pair의 차이점을 추가하러 가야겠다...(요청이 들어왔기 때문에 ㅎㅎ)

 

그럼 안녕~~~

모두들 감기 조심하세요~

 

 

 

+) ㅎㅎ 추가 완료!!

https://taetae2023.tistory.com/11

 

[C++] 백준 10814번 나이순 정렬

어제에 이어 오늘도 친구들과 도서관에 가기로 한 날이다... ... 늦잠 자서 샤워만 하고 얼른 도서관에 왔다... 오늘도 파이팅~~ 문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지

taetae2023.tistory.com

 

728x90

'백준 > C++' 카테고리의 다른 글

[C++] 백준 11399번 ATM  (2) 2023.12.13
[C++] 백준 10825번 국영수  (2) 2023.12.12
[C++] 백준 10816번 숫자 카드 2  (2) 2023.12.10
[C++] 백준 10989번 수 정렬하기 3  (4) 2023.12.09
[C++] 백준 10815번 숫자 카드  (6) 2023.12.08