본문 바로가기

알고리즘 자료구조/백준

[백준]1377 버블 소트

728x90

🖊️문제

버블 소트 알고리즘을 다음과 같이 C++로 작성했다.

bool changed = false;
for (int i=1; i<=N+1; i++) {
    changed = false;
    for (int j=1; j<=N-i; j++) {
        if (A[j] > A[j+1]) {
            changed = true;
            swap(A[j], A[j+1]);
        }
    }
    if (changed == false) {
        cout << i << '\n';
        break;
    }
}

위 소스에서 N은 배열의 크기이고, A는 정렬해야 하는 배열이다. 배열은 A[1]부터 사용한다.

위와 같은 소스를 실행시켰을 때, 어떤 값이 출력되는지 구해보자.

 

 

 

 

🖊️풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        mData[] arr = new mData[n];

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

        Arrays.sort(arr);
        int max = 0;

        for (int i = 0; i < n; i++) {
            if(max < arr[i].index - i){
                max = arr[i].index-i+1;
            }
        }

        System.out.println(max);
    }
}

 
class mData implements Comparable<mData>{
    int value;
    int index;

    public mData(int value, int index) {
        super();
        this.value = value;
        this.index = index;
    }
    
    @Override
    public int compareTo(mData o) {
        return this.value - o.value;
    }
}
728x90

'알고리즘 자료구조 > 백준' 카테고리의 다른 글

[백준] 10828 스택  (1) 2024.02.29
[백준] 11399 ATM  (0) 2023.09.17
[백준] 11286 절댓값 힙  (0) 2023.08.30
[백준] 2164 카드2  (0) 2023.08.30
[백준] 1874 스택 수열  (0) 2023.08.29