본문 바로가기
Preparing Coding Test/Baekjoon

[Java/백준/정렬] 2750 - 수 정렬하기

by weero 2020. 8. 20.

문제

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

 

2750번: 수 정렬하기

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

www.acmicpc.net

 

O(n^2)으로 풀어도 된다고 하니 맘 편하게 선택 정렬버블 정렬을 써볼까 한다.

 

코드 1

버블 정렬 (시간: 104 ms)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

public class Main{
	private static void bubbleSort(int[] arr, int last) {
		if(last > 0) {
			for(int i=0; i<last; i++) {
				if(arr[i] > arr[i+1]) {
					int tmp = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = tmp;
				}
			}
			bubbleSort(arr, last-1);
		}
	}
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int N = Integer.parseInt(br.readLine());
		int[] arr = new int[N];
		
		for(int i=0; i<N; i++) {
			arr[i] = Integer.parseInt(br.readLine());
		}
		
		bubbleSort(arr,arr.length-1);
		
		for(int data : arr) {
			sb.append(data).append("\n");
		}
		
		System.out.println(sb);
	}
}

 

코드 

선택 정렬 (시간: 104 ms)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
	private static void selectionSort(int[] arr, int start) {
		if(start < arr.length) {
			int min_index = start;
			for(int i=start; i<arr.length; i++) {
				if(arr[i]< arr[min_index]) {
					min_index = i;
				}
			}
			int tmp = arr[start];
			arr[start] = arr[min_index];
			arr[min_index] = tmp;
			
			selectionSort(arr, start+1);
		}
	}
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int N = Integer.parseInt(br.readLine());
		int[] arr = new int[N];
		
		for(int i=0; i<N; i++) {
			arr[i] = Integer.parseInt(br.readLine());
		}
		
		selectionSort(arr, 0);
		
		for(int data : arr) {
			sb.append(data).append("\n");
		}
		
		System.out.println(sb);
	}
}