본문 바로가기
개발 서적 리뷰/DoIt 알고리즘 코딩테스트

[버블정렬] 백준 2750번

by 거북이의 기술블로그 2024. 11. 7.

문제

N개의 수가 주어졌을 때, 이를 오름차순 정렬하는 프로그램을 작성하시오.

- 1번째 줄에 수의 개수 N (1 <= N <= 1,000)
- 2번째 줄부터 N개의 줄에 숫자가 주어짐
- 수는 중복되지 않는다

 

문제 분석하기

숫자 범위가 1,000으로 매우 작기 때문에, O(N^2) 시간복잡도 알고리즘을 사용해도 문제 없음
버블정렬 알고리즘을 이용하여 문제풀이

 

슈도코드

N(정렬할 수 개수)
A(정렬할 배열 선언)
for(i : 0~N -1)
{
    for(j : 0 ~ N -1 -i)
    {
        현재 A배열의 값보다 1칸 오른쪽 배열의 값이 더 작으면 두 수 바꾸기
    }
}
A 배열 출력

 

구현

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class App {
    public static void main(String[] args) throws Exception {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int length = Integer.parseInt(br.readLine());

        int []arr = new int[length];
        
        for (int i =0; i < length; i++){
            arr[i] = Integer.parseInt(br.readLine());
        }

        for (int i =0; i < arr.length; i++){
            for(int j =0; j< arr.length -1 -i; j++){
                if (arr[j] > arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }

        for (int i : arr) {
            System.out.println(i);
        }
    }
}

'개발 서적 리뷰 > DoIt 알고리즘 코딩테스트' 카테고리의 다른 글

[선택정렬] 백준 1427번  (1) 2024.11.09
[버블정렬] 백준 1377번  (0) 2024.11.08
[우선순위 큐]백준 11286번  (0) 2024.11.06
[큐] 백준 2164번  (0) 2024.11.04