# 문제 출제 사이트
https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
# 문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
# 입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다.
둘째 줄부터 N개의 줄에는 수가 주어진다.
이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
# 출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
# 제출한 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] numArr = new int[n];
for ( int i = 0; i < n; i++ ) {
numArr[i] = Integer.parseInt(br.readLine());
}
for ( int j = 0; j < n; j++ ) {
for ( int k = 0; k < n; k++ ) {
if ( numArr[j] < numArr[k] ) {
int tempNum = numArr[k];
numArr[k] = numArr[j];
numArr[j] = tempNum;
}
}
}
for (int num : numArr) {
System.out.println(num);
}
}
}
- 선택정렬을 사용해서 문제를 풀어보았다.
- 선택정렬을 구현하기 쉽지만 시간복잡도가 O(n2) 으로 그리 좋은 성능의 알고리즘은 아니다.
- 자바 자체에서 제공해주는 정렬 함수를 사용하지 않고 구현
- Arrays 클래스에 sort 기능이 내장되어 있다.
- 위 문제를 풀려고 초반에 구현할 때 카운팅 정렬을 사용해볼려고 했다.
하지만 너무 이상하게 구현을 하다가 결국에 산으로 가버리고 포기하게 되었다.
- 카운팅 정렬 관련 내용은 아래 참고한 자료(블로그) 링크에 잘 설명이 되어 있습니다.
# 참고한 자료
- 블로그 Stranger's LAB => 링크 바로가기
반응형