Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 4949
- 해바
- 1874
- IT
- QA
- 시스템 프로그래밍
- The Balance of the World
- Baekjoon
- BAKA
- File 조작
- system programming
- 전자책
- 5622
- Process Communication
- 입력 버퍼
- 백준
- 2941
- c++
- file IO
- process control
- 시프
- 바샤
- 10773
- For Beginners
- LJESNJAK
- Zero That Out
- c
- 브런치
- 균형잡힌 세상
- Parenthesis
Archives
- Today
- Total
해바
2750) 11. 정렬 : 수 정렬하기 본문
문제
https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
풀이
시간복잡도가 O($n^2$)인 정렬 알고리즘 중에 아무거나 쓰면 된다. Bubble Sort와 Insert Sort 둘 다 짜봤다(기본 개념은 여기를 참고함). 5 2 3 4 1 이란 숫자를 정렬하는 방법을 설명하는 건 아날로그적 방식으론 바로 설명할 수 있는데, 코드로 구현하는 과정은 전혀 다른 문제다. 다음에 풀어볼 Merge Sort나 Quick Sort는 특히나..
C++이라면 #include "algorithm"의 sort함수를 이용해 훨씬 간단하게 처리할 수 있다. 예를 들어 vector 배열을 정렬한다면
sort(v.begin(), v.end()); // default : ascending order
한 줄로 해결된다.
#include "cstdio"
void iSort(int* data, int size) {
// Insert Sort
// 5 2 3 4 1 -> 2 3 5 4 1
int j(0), temp(0);
// ex. i == 3
for(int i(1); i < size; i++) {
temp = data[i]; // temp == 4
for(j = i - 1; j >= 0 && data[j] > temp; j--) data[j + 1] = data[j];
// 5 > 4 -> data[4] = data[3] (5 = 4 덮어쓰기)
data[j + 1] = temp; // data[3] = 4
}
}
void bSort(int* data, int size) {
// Bubble Sort
int temp(0);
for(int i(size - 1); i > 0; i--) {
for(int j(0); j < i; j++) {
if(data[i] < data[j]) {
temp = data[j];
data[j] = data[i];
data[i] = temp;
}
}
}
}
int main() {
int* data(NULL), repeat(0);
scanf("%d", &repeat);
data = new int[repeat];
for(int i(0); i < repeat; i++) scanf("%d", &data[i]);
iSort(data, repeat);
//bSort(data, repeat);
for(int i(0); i < repeat; i++) printf("%d\n", data[i]);
delete data;
return 0;
}'C, C++' 카테고리의 다른 글
| 2751) 11. 정렬 : 수 정렬하기 2 (0) | 2019.08.27 |
|---|---|
| 1874) 15. 스택 : 스택 수열 (0) | 2019.08.25 |
| 4949) 15. 스택 : 균형잡힌 세상(The Balance of the World) (0) | 2019.08.23 |
| 9012) 15. 스택 : 괄호(Parenthesis) (0) | 2019.08.20 |
| 10773) 15. 스택 : 제로(Zero That Out) (0) | 2019.08.18 |
Comments