본문 바로가기

Dev. Etc/Algorithm

[JAVA] 백준 알고리즘 2750번 문제풀이 (수 정렬하기)

 

 

 

 

 

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

 

2750번: 수 정렬하기

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

www.acmicpc.net

 

 

 

 

● 수 정렬하기 (2750번)

 

 

 

 

 

 

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int i, j, min, index = 0, temp;
		int num = sc.nextInt();
		int[] arr = new int[1001];
		
		for(i=0; i<num;i++) {
			arr[i]=sc.nextInt();
		}
		
		//정렬
		for(i=0;i<num;i++) {
			min = 1001;
			for(j=i;j<num;j++) {
				if(min>arr[j]) {
					min = arr[j];
					index = j;
				}
			}
			temp = arr[i];
			arr[i] = arr[index];
			arr[index] = temp;
		}
		
		//출력
		for(i=0;i<num;i++	) {
			System.out.println(arr[i]);
		}
	}
}

↓ 소스풀이 ↓

우선, 각종 변수와 배열을 선언해줍니다.

저는 버블정렬을 사용했습니다.

arr배열에 입력한 수를 모두 인덱스0부터해서 저장합니다.

절대값이 1000보다 작거나 같아야하므로, min을 최대 크기로 1001을 저장해줍니다.

이중 for 반복문을 사용해서 min과 비교해주고 min이 더 큰값을 가질때는 그값을 min에 저장하고, 인덱스도 따로 저장해줍니다.

그렇게 한바퀴가 돌면 저장된 값과 swap(위치 교환)을 해줍니다.