본문 바로가기

CodingTEST

[백준 2750번] 수 정렬하기 (JAVA)

반응형

백준 2750번 문제  - 수 정렬하기 

 

2750번: 수 정렬하기

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

www.acmicpc.net


문제 분석

 

  • N개의 수를 입력
  • 수 정렬

 


해결 키 포인트
  • 정렬 방식
    • Arrays.sort() 
    • 버블 정렬

버블 정렬 설명

 

버블정렬은 두 인접한 데이터의 크기를 비교해 정렬하는 방법으로 반복문을 돌면서 인접한 데이터 간의 swap 연산으로 정렬한다.

→ 시간복잡도: O(n^2) : 다른 정렬 알고리즘보다 속도가 느린편

 

Do It! 알고리즘 코딩 테스트 기본



코드
package ch01;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	public static void main(String [] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		// N 입력
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		
		// 입력받을 배열
		int num [] = new int[N];
		
		// 배열 입력 
		for(int i=0;i<N;i++) {
			st = new StringTokenizer(br.readLine());
			num[i] = Integer.parseInt(st.nextToken());
		}
		
      		/** 다음 두 방식 중 하나의 방식 선택해서 사용 **/
        
		/* (1) Arrays.sort()를 이용한 배열 정렬 */
		Arrays.sort(num);
		
		/* (2) 버블 정렬을 이용한 배열 정렬 */
		// 끝값을 배열 마지막 값에서 줄여가기
		for(int i=N-1;i>0;i--) {
			// i번째까지 배열 비교 및 swap
			for(int j=0;j<i;j++) {
				// 두 값 비교 -> 앞의 값이 뒤에 갑보다 클 경우
				if(num[j] > num[j+1]) {
					// 두 값 swap
					int swap = num[j+1];
					num[j+1] = num[j];
					num[j] = swap;
				}
			}
		}
		
		// 출력
		for(int i=0;i<N;i++)
			bw.write(num[i]+"\n");
		
		bw.flush();
		bw.close();
	}
}

 

반응형

'CodingTEST' 카테고리의 다른 글

[백준 1427] 소트인사이드 (JAVA)  (0) 2023.07.29
[백준 1377] 버블 소트 (JAVA)  (0) 2023.07.10
[백준 11286번] 절댓값 힙 (JAVA)  (0) 2023.03.12
[백준 2164번] 카드2 (JAVA)  (0) 2023.03.12
[백준 17298번] 오큰 수 (JAVA)  (0) 2023.03.12