/ BOJ

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);




	}

}