신규 블로그를 만들었습니다!
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절대값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력
5
5
2
3
4
1
예제 출력
1
2
3
4
5
삽입 정렬 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Ex2750 {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
try {
int n = Integer.parseInt(br.readLine());
int[] data = new int[n];
for (int i = 0; i < n; i++) {
data[i] = Integer.parseInt(br.readLine());
}
// sort
int temp = 0;
for (int i = 0; i < n-1; i++) {
while(data[i] > data[i+1]) {
temp = data[i];
data[i] = data[i+1];
data[i+1] = temp;
if(i>0) {
i--;
}
}
}
printData(data);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
private static void printData(int[] data) {
for (int i = 0; i < data.length; i++) {
System.out.println(data[i] + " ");
}
}
}
퀵 정렬 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ex2750 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] data = new int[n];
int i;
for(i=0; i<n; i++) {
data[i] = Integer.parseInt(br.readLine());
}
quick_sort(data, 0, n-1);
for(i=0; i<n; i++) {
System.out.println(data[i]);
}
}
private static void quick_sort(int[] data, int left, int right) {
if(left >= right) return;
int pivot = left;
int l = pivot +1;
int r = right;
int temp;
while(l <= r) {
while(l <= right && data[l] <= data[pivot]) l++;
while(r >= left+1 && data[r] >= data[pivot]) r--;
if(l<r) {
temp = data[l];
data[l] = data[r];
data[r] = temp;
}else {
temp = data[r];
data[r] = data[pivot];
data[pivot] = temp;
}
}
quick_sort(data, left, r-1);
quick_sort(data, r+1, right);
}
}
결과
※ 직접 문제 풀고 돌려본 뒤, 채점까지 마친 후에 작성한 글입니다.
더 좋은 방법이 있다면, 댓글로 알려주시면 감사하겠습니다 :)
'Algorithm > 백준 온라인 저지' 카테고리의 다른 글
백준/1260번 :: DFS와 BFS(Java 코드) (3) | 2018.06.18 |
---|---|
백준/10817번 :: 세 수 (Java 코드) (6) | 2018.06.16 |
백준/1003번 :: 피보나치 함수 (C/C++ 구현) - DP, 메모이제이션 (2) | 2018.05.02 |
백준/11727번 :: 2xn 타일링 2 (C/C++ 구현) - DP, 메모이제이션 (4) | 2018.05.02 |
백준/11726번 :: 2xn 타일링 (C/C++ 구현) (5) | 2018.05.02 |
최근댓글