본문 바로가기
IT/알고리즘(Algorithm)

[JAVA]백준 2750번 문제 풀이

by 공부하는개미 2022. 11. 13.

# 문제 출제 사이트

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 기능이 내장되어 있다.
  • 위 문제를 풀려고 초반에 구현할 때 카운팅 정렬을 사용해볼려고 했다.
    하지만 너무 이상하게 구현을 하다가 결국에 산으로 가버리고 포기하게 되었다.
    • 카운팅 정렬 관련 내용은 아래 참고한 자료(블로그) 링크에 잘 설명이 되어 있습니다.

 

# 참고한 자료

반응형