[백준,BOJ 2750] 수 정렬하기(JAVA 구현)
코테/백준 온라인 저지(BOJ)

[백준,BOJ 2750] 수 정렬하기(JAVA 구현)

반응형

-내 생각

  단순한 정렬 문제로, Arrays.sort() 메서드를 사용하면 손쉽게 풀 수 있지만 개인적으로 정렬 알고리즘에 대한 공부도 할 겸 문제의 설명에 나와있는 삽입 정렬, 거품 정렬을 이용해 풀어보고자 했다.

 

-해법

import java.util.Scanner;

public class Main{
	
	static void insertion_sort(int[] arr) { // 삽입 정렬 메소드
		int key; // 정렬할 키 값
		
		for(int i =1;i<arr.length;i++) { // 첫 번째는 정렬된 것으로 간주하므로 1번 시작 
			key = arr[i]; // key값 저장
			
			for(int j=i-1;j>=0;j--) { // key값 이전의 인덱스들과 크기 비교
				if(arr[j]>key) { // key값 보다 크다면,
					arr[j+1] = arr[j]; // 뒤로 한 칸 이동.
					arr[j] = key; // key 값을 앞선 인덱스 자리에 삽입.
				}
			}
		}		
	}
	
    public static void main(String[] args){
      Scanner in = new Scanner(System.in);
      
      int n = in.nextInt();
 
      int arr[] = new int[n];
      
      for(int i=0;i<arr.length;i++) { // 데이터 입력
    	  arr[i] = in.nextInt();
      }
      
      insertion_sort(arr); // 삽입정렬 수행
      
      for(int i=0;i<arr.length;i++) { // 출력
    	  System.out.print(arr[i]+" ");
      }
      
      in.close();
    }
}

  삽입 정렬은 2번 인덱스 또는 맨 뒤의 인덱스를 기준으로 정렬을 실시하지만, 본인은 2번 인덱스를 기준으로 하였다. 2번 인덱스를 기준으로 앞선 인덱스들과 비교하며 자리를 바꾸어 정렬하는 방법으로 자세한 설명은 다른 블로그에 잘 되어 있으니 참고하면 좋겠다.

 

import java.util.Scanner;

public class Main{
	
	static void bubble_sort(int[] arr) { // 버블 정렬 메소드
		int temp; // 자리 바꾸기 위한 temp 변수
	
		for(int i=0;i<arr.length;i++) { // 1회전에 끝자리는 정렬 됨을 주의
			for(int j=0;j<arr.length-1-i;j++) { // 비교 대상의 끝 자리를 하나씩 줄여나간다
				if(arr[j]>arr[j+1]) { // 대소비교 후 자리교환
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		
	}
	
    public static void main(String[] args){
      Scanner in = new Scanner(System.in);
      
      int n = in.nextInt();
 
      int arr[] = new int[n];
      
      for(int i=0;i<arr.length;i++) { // 데이터 입력
    	  arr[i] = in.nextInt();
      }
      
      bubble_sort(arr); // 버블 정렬 호출
      
      for(int i=0;i<arr.length;i++) { // 출력
    	  System.out.print(arr[i]+" ");
      }
      
    }
}

  버블 정렬은 0번 인덱스부터 +1인덱스와 비교해 나아가며 자리를 바꾸는 정렬로 1회전 시 끝에는 가장 큰 수가 정렬되는 형태이다. 마찬가지로 자세한 설명은 다른 블로거분들의 글을 참고하면 좋을 것 같다. 

반응형