일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- STM32 라인업
- STM32 IDE
- STM32 개발환경
- Mega2560
- Microchip Studio
- 아두이노 통신
- SPXL
- Avr
- 유심 재발급
- 코딩테스트
- flag 변수
- 아두이노
- STM32
- CubeIDE
- 객체지향
- atmega
- 코테
- NUCLEO-F103RB
- 정렬알고리즘
- STM32CubeIDE
- c#
- 유심 재발급 제한
- STL
- C++
- S&P500
- 백준
- sort
- GPIO
- 정렬
- 알고리즘
- Today
- Total
뽕구의 개발일지
[코팅테스트] 백준 #2751 수 정렬하기 (STL 사용) 본문
백준 #2751 수 정렬하기
https://www.acmicpc.net/problem/2751
버블 정렬 공부하면서 이번 문제는 버블정렬로 풀어야지! 했는데
계속 시간 초과가 났습니다.
분명히 2750 문제랑 똑같았다고 생각했는데 원인을 찾아보니 입력 수가 1,000,000 으로 늘어난 걸 캐치를 못했어요 ㅠㅠ
그래서 오래 걸리는 버블이랑 선택 정렬로 풀어도 #2750은 풀렸는데 #2751은 안풀렸습니다.
그래서 이번에는 C++ STL 함수 sort()를 사용했습니다.
"algorithm.h" 에 포함되어 있는 함수이니까 #inlcude <algorithm> 해주세요~
Sort() 는 퀵 정렬을 기반으로 힙 정렬과 삽입 정렬이 혼합된 방식으로 구현되어 있다고 하네요.
따라서 O(N^2) 시간 복잡도를 갖는 퀵 정렬과 다르게 O(n log n)을 보장한다고 해요!
STL 함수를 잘 활용하여 코테를 푸는 것도 방법이겠어요
참고로 Sort는 기본적으로 오름차순이지만 아래와 같은 방법으로 설정할 수 있습니다.
//오름차순
sort(배열 시작, 배열 끝, less<int>());
//내림차순
sort(배열 시작, 배열 끝, greater<int>());
sort()를 이용해 오름차순 정렬을 구현한 방법은 아래와 같습니다.
구현
#include <iostream>
#include <algorithm>
using namespace std;
int arr[1000000];
int main() {
/** 버블 정렬 **/
//옆의 수와 비교하여 작으면 앞으로 보낸다.
int inputNumber;
std::cin >> inputNumber;
for (int i = 0; i < inputNumber; i++) {
std::cin >> arr[i];
}
std::sort(arr, arr + inputNumber);
for (int k = 0; k < inputNumber; k++) {
std::cout << arr[k] << "\n";
}
return 0;
}
마치며
STL 함수 없이 풀다가 계속 메모리 초과나서 좀 답답했는데, 구글링 통해서 해결 방법을 찾았습니다.
앞으로 STL 함수들을 좀 더 많이 이용해서 푸는 시간을 더 줄여봐야겠어요
1일 1문제 하도록 노력해보겠습니다.
읽어주셔서 감사합니다 C:
'개발 일지 > 알고리즘\코테' 카테고리의 다른 글
[코팅테스트] 백준 #10817 세 수 (STL 사용) (0) | 2024.09.11 |
---|---|
[알고리즘] 삽입 정렬 (0) | 2024.09.11 |
[코딩테스트] 백준 #2750 수 정렬하기 (0) | 2024.09.09 |
[코딩테스트] 백준 #10845 Queue 구현하기 (0) | 2024.08.10 |