문제 출처

1. 문제설명


  • 아이들을 줄을 세운다.
  • 규칙
    • 자기 앞에 자기보다 키가 큰 학생이 없다면 그냥 그 자리에 서고 차례가 끝난다.
    • 자기 앞에 자기보다 키가 큰 학생이 한명 이상 있다면 그중 가장 앞에 잇는 학생의 바로 앞에 선다.
      • 이 때, A부터 그 뒤의 모든 학생들은 공간을 만들기 위해 한발짝 뒤로 물러선다.
  • 규칙대로 줄을 서게 되면 학생들이 몇 번 뒤로 물러서게 되는가?



2. 알고리즘 설계


  • 단순 구현 문제이다.
  • i번째부터 차례대로 진행하면서,
  • 자신보다 키 큰 사람이 오른쪽에 몇명있는지 카운팅 하면 된다.



3. 로직


  • 2중 for문으로 구현한다.
  • 로직이 너무 간단해서 별도의 설명이 필요없을 정도이다.



4. 전체 코드


#include<bits/stdc++.h>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int TC; cin >> TC;
	while (TC--) {
		int t, arr[20], ans = 0;
		
		cin >> t;
		for (int i = 0; i < 20; i++)
			cin >> arr[i];

		for (int i = 0; i < 20; i++)
			for (int j = i+1; j < 20; j++)
				if (arr[i] > arr[j])
					ans++;

		cout << t << ' ' << ans << '\n';
	}

	return 0;
}