구현코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int k = Integer.parseInt(st.nextToken());
int[][] arr = new int[k+1][21];
int[] result = new int[k+1];
int cnt = 1;
while(cnt < k){
int sum = 0;
st = new StringTokenizer(br.readLine());
cnt = Integer.parseInt(st.nextToken());
for(int i = 1 ; i <=20 ; i++){
arr[cnt][i] = Integer.parseInt(st.nextToken());
int target = i;
for(int j = (i-1); j >= 1; j--){
if(arr[cnt][target] < arr[cnt][j]){
sum++;
int temp = arr[cnt][target];
arr[cnt][target] = arr[cnt][j];
arr[cnt][j] = temp;
target = j;
}else{
break;
}
}
}
result[cnt] = sum;
}
for(int i = 1 ; i <= k; i++){
System.out.println(i +" "+result[i]);
}
}
}
소스코드 해석 : 아이들의 키 순으로 오름차순 할 필요없이 자신보다 앞에 있는 사람들의 숫자들을 더하면 되는 문제이다.
간단한 문제이지만 저는 문제에 나오는 것 처럼 오름차순으로 정렬을 했습니다.
오름차순으로 정렬을 하면 해당 아이의 키와 이전 아이의 키와 비교해서 해당 아이의 키가 크다면 그대로 아니라면 두수의 자리를 바꾸고 count++ 해주었습니다.