본문 바로가기

개발(합니다)/알고리즘&코테

알고리즘 단계별로 풀어보기 : BOJ-2750(수정렬하기)

반응형

문제(출처)

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.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String args[]) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        try {
            int rang = Integer.parseInt(br.readLine());
            int[] num = new int[rang];
            for(int i = 0; i < rang; i++) {
                num[i] = Integer.parseInt(br.readLine());
            }
            
            int[] result = calc(num);
            
            for(int i : result) {
                bw.write(String.valueOf(i));
                bw.newLine();
            }
            bw.flush();
            bw.close();
            
            
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static int[] calc(int[] num) {
        
        int temp = 0;
//      임시 저장 변수를 선언합니다.
        for(int i = 0; i < num.length; i++) {
            for(int j = (i+1); j <= num.length-1; j++) {
//              i의 다음 수를 j로 지정합니다.
                if(num[i] > num[j]) {
//                  i번쨰 값이 j번쨰 값보다 크다면 j의 값을 temp에 저장합니다.
//                  i번째 값을 j에 저장합니다.
//                  temp값을 i에 저장합니다.
                    temp = num[j];
                    num[j] = num[i];
                    num[i] = temp;
                }
            }
        }
        
        return num;
    }
    
}



내 풀이 해석

앞 뒤 숫자를 비교해서 순서를 변경합니다.


반응형