https://www.acmicpc.net/problem/1377
버블 소트를 몇 번이나 해야하는지 출력하는 문제다.
각 원소가 정렬되기 위해 움직여야하는 최대 횟수 + 1을 출력하면 된다.
왜 + 1을 하냐면, 정렬이 끝난 후에도 한번 훑어야 하기 때문이다.
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class boj1377 {
static class element implements Comparable<element>{
int number, value;
element(int a, int b){
number = a;
value = b;
}
@Override
public int compareTo(element o) {
return Integer.compare(this.value, o.value);
}
}
static ArrayList<element> elementArrayList= new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(new StringTokenizer(br.readLine()).nextToken());
for(int i = 1; i <= n; i++){
st =new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
elementArrayList.add(new element(i, a));
}
Collections.sort(elementArrayList);
int max = 0;
for(int i = 1;i<=elementArrayList.size();i++){
max = Integer.max(max, elementArrayList.get(i-1).number - i + 1);
}
bw.write(max + "\n");
bw.flush();
}
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 16946 벽 부수고 이동하기4(JAVA) (0) | 2020.09.30 |
---|---|
백준 14867 물통(JAVA) (0) | 2020.09.22 |
백준 11779 최소 거리 구하기2(Java) (0) | 2020.09.17 |
백준 2613 숫자구슬(자바) (0) | 2020.09.16 |
백준 2143 두 배열의 합(JAVA) (0) | 2020.09.16 |