주니어 기초 코딩공부/JAVA 활용-Algorithm
JAVA_버블정렬 알고리즘_수 정렬하기_백준 1750
jju_developer
2023. 1. 30. 14:15
728x90
자바 알고리즘- 수 정렬 알고리즘
시간 제한 | 메모리 제한 |
2 초 | 128 MB |
수 정렬하기-백준 1750
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
▶ 나의 문제풀이
수의 개수 N(1 ≤ N ≤ 1,000)로 최대 범위가 매우 작기 때문에 O(n²) 시간 복잡도로 알고리즘을 풀 수 있습니다.
버블 정렬의 시간 복잡도가 O(n²) 이므로 버블 정렬 알고리즘을 이용해 정렬해도 시간 복잡도 안에서 문제를 풀 수 있습니다.
N 입력 받기
반복문으로 arr[N] 배열 수 입력 받기
for( i = 1; i < N ; i ++ ){
for( j =0; j<N-i; j++ ){
arr[j]값과 arr[j+1]값 비교
arr[j+1]값이 더 크 면 두 수 교체
( tmp_두 변수 값 교체 알고리즘 )
}
}
arr 배열 출력
▶ 나의 코드
package algorithm.doit;
import java.util.Scanner;
public class 수정렬하기_버블정렬 {
public static void main(String[] args) {
System.out.println("원하는 수열의 개수를 적으시오 예) 5");
Scanner sc = new Scanner(System.in);
// 들어오고자 하는 수의 개수를 N에 담고 배열의 길이로 활용
int N = sc.nextInt();
int[] arr = new int[N];
// for문을 활용하여 다음으로 입력되는 값을 N개 만큼씩 A배열에 저장 될 수 있도록 함
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
sc.close();
// 버블 정렬 시작
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
<참고>
책: do it 알고리즘 코딩 테스트 자바편
코딩 테스트: https://www.acmicpc.net/
참고 자료: https://lordofkangs.tistory.com/131
Baekjoon Online Judge
Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.
www.acmicpc.net
728x90