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

2020. 10. 20. 16:51·CodingTest/백준 온라인 저지(BOJ)
반응형

-내 생각

  단순한 정렬 문제로, 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회전 시 끝에는 가장 큰 수가 정렬되는 형태이다. 마찬가지로 자세한 설명은 다른 블로거분들의 글을 참고하면 좋을 것 같다. 

저작자표시 (새창열림)
'CodingTest/백준 온라인 저지(BOJ)' 카테고리의 다른 글
  • [백준,BOJ 10989] 수 정렬하기 3( JAVA 구현)
  • [백준,BOJ 2751] 수 정렬하기 2( JAVA 구현, 재풀이)
  • [백준,BOJ 1018] 체스판 다시 칠하기(JAVA 구현, 재풀이)
  • [백준,BOJ 11729] 하노이 탑 이동 순서(JAVA 구현, 재풀이)
뜸부깅
뜸부깅
코딩에 대한 여러 개인적인 생각을 정리하고 공부를 하는 공간입니다!!
  • 뜸부깅
    코오오딩
    뜸부깅
  • 전체
    오늘
    어제
    • Note (429)
      • Skill (31)
        • Java & Spring (9)
        • Javascript & HTML & CSS (0)
        • React (0)
        • Next.js (22)
      • CodingTest (389)
        • 백준 온라인 저지(BOJ) (140)
        • 프로그래머스(Programmers) (79)
        • LeetCode (170)
      • Algorithm & Data Structure (6)
      • [Project] 포트폴리오 (3)
        • Front end (3)
        • Back end (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BOJ
    next 14
    Easy
    meidum
    Java
    TypeScript
    백준7576
    백준
    medium
    알고리즘
    백준1260
    백준7576자바
    백준2751
    component-scan
    백준1427
    leetcode 2236
    boj1427
    자바
    프로그래머스
    boj2108
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
뜸부깅
[백준,BOJ 2750] 수 정렬하기(JAVA 구현)
상단으로

티스토리툴바