BOJ_10431_줄세우기_JAVA
문제 : 줄 세우기
링크 : BOJ_10431_줄세우기
접근 방식
1번부터 차례대로 줄을 서는데, 자신보다 앞에 더 큰 수가 있다면 그 중에서 가장 앞에있는 사람의 앞자리에 줄을 선다. 그만큼 뒤에 있는 사람은 한 칸씩 밀려난다.
위의 과정을 다 실행할 필요 없이, 1번부터 20번까지 반복하면서 자신의 앞에 자신보다 더 큰 수가 있는지만 비교하여 그 수만큼 카운트를 증가시키는 방식으로 간단하게 결과를 구할 수 있다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_10431_줄세우기 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(in.readLine());
StringBuilder sb= new StringBuilder();
StringTokenizer st;
for(int tc=1;tc<=T;tc++) {
st = new StringTokenizer(in.readLine()," ");
int[] arr = new int[20];
sb.append(st.nextToken()).append(" ");
int cnt = 0;
for(int i=0;i<arr.length;i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
for(int i=0;i<arr.length;i++) {
for(int j=0;j<i;j++) {
if(arr[j] > arr[i]) {
cnt++;
}
}
}
sb.append(cnt).append('\n');
}
System.out.println(sb);
}
}