버블 소트 예제 - 2
Last updated
Last updated
n(데이터 개수)
a(데이터 리스트)
for n 반복:
a 리스트 저장
a 리스트 정렬
for n 반복:
a[i]의 정렬 전 index - 정렬 후 index 계산의 최댓값을 찾아 저장
최댓값 + 1 출력import sys
input = sys.stdin.readline
n = int(input())
a = []
for i in range(n):
a.append((int(input()), i)) # [data, index] 튜플 저장 # 먼저 넣은 데이터를 기준으로 정렬을 시도한다.
max_val = 0
a.sort()
for i in range(n):
# a[i][1] = 각 튜플의 index
if a[i][1] - i > max_val: # 정렬 전 index - 정렬 후 index 계산의 최댓값 저장
max_val = a[i][1] - i
print(max_val + 1)import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
static class Data {
int value, index;
public Data(int value, int index) {
this.value = value;
this.index = index;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Data[] data = new Data[n];
for (int i = 0; i < n; i++) {
int value = Integer.parseInt(br.readLine());
data[i] = new Data(value, i); //값과 index 저장
}
/*
Arrays.sort(data, (o1, o2) -> {
return o1.value - o2.value;
});
*/
Arrays.sort(data, Comparator.comparingInt(o -> o.value)); //값 기준으로 정렬, 위 주석처리 한 코드와 같다.
int max = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
int num = data[i].index - i; //정렬 전 index - 정렬 후 index
if (max < num) {
max = num;
}
}
System.out.println(max + 1);
}
}