본문 바로가기

Study for Backend/Algorithm

[Algorithm 기초연습] 백준 2750 수 정렬하기

https://www.acmicpc.net/problem/2750

 

2750번: 수 정렬하기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

//버전01
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int cnt = sc.nextInt();
        int[] arr = new int[cnt];
        
        for(int i = 0; i < cnt; i++){
            arr[i] = sc.nextInt();
        }
        
        Arrays.sort(arr);
        
        StringBuilder stBuilder = new StringBuilder();
        for(int index : arr){
            stBuilder.append(index + "\n");
        }
        System.out.println(stBuilder);
    }
}

 

//버전02 선택정렬로 구현

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int cnt = sc.nextInt();
        int[] arr = new int[cnt];
        //입력
        for(int i = 0; i < cnt; i++){
            arr[i] = sc.nextInt();
        }
        //선택정렬
        for(int i = 0; i < arr.length - 1; i++){
            int min = i; //최소값
            for(int j = i + 1; j < arr.length ; j++){
                if(arr[j] < arr[min]){ //최소값과 비교
                    min = j;
                }
            }
            int temp = arr[i];//swap
            arr[i] = arr[min];
            arr[min] = temp;
        }
        //출력
        StringBuilder stb = new StringBuilder();
        for(int item : arr){
            stb.append(item + "\n");
        }
        System.out.println(stb);
    }
}

 

//버전03 삽입정렬로 구현
import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int cnt = sc.nextInt();
        int[] arr = new int[cnt];
        //입력
        for(int i = 0; i < cnt; i++){
            arr[i] = sc.nextInt();
        }
        
        //삽입정렬
        for(int x = 1; x < arr.length; x++){
            for(int y = x; y > 0 ; y--){ //줄어들면서 앞쪽하고 비교
                if(arr[y] < arr[y - 1]){ //앞쪽 값보다 작다면
                    int temp = arr[y]; //스왑
                    arr[y] = arr[y - 1];
                    arr[y - 1] = temp;
                }else {
                    break;
                }
            }
        }
        
        //출력
        StringBuilder stb = new StringBuilder();
        for(int item : arr){
            stb.append(item + "\n");
        }
        System.out.println(stb);

    }
}

 

//버전04 버블정렬로 구현
import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int cnt = sc.nextInt();
        int[] arr = new int[cnt];
        //입력
        for(int i = 0; i < cnt; i++){
            arr[i] = sc.nextInt();
        }

        //버블정렬
        /*
        //인텔리제이에서는 문제가 없으나 제출 시 에러남
        for(int i = 1; i < arr.length - 1; i++){
            for(int j = 0; j < arr.length - i ; j++){
                if(arr[j] > arr[j + 1]){
                    int temp = arr[j];//swap
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        */
      	
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                }

            }
        }

        //출력
        StringBuilder stb = new StringBuilder();
        for(int item : arr){
            stb.append(item + "\n");
        }
        System.out.println(stb);

    }
}