※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 3061번 문제인 사다리이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/3061 

 

3061번: 사다리

입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 두 줄로 구성되어 있다. 첫 번째 줄에는 사다리 세로줄의

www.acmicpc.net

사다리 선을 하나 긋는 것은 인접한 두 원소의 차례를 서로 바꾸는 것과 같음을 알 수 있다.

 

위의 관찰과 함께 사다리의 위아래를 뒤집어 문제를 재해석하면, 주어진 배열을 버블정렬(bubble sort)할 때 필요한 최소 swap 횟수를 구하는 문제로 생각할 수 있다. 이 값을 계산해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <cstring>
using namespace std;

int T, N;
int arr[1001];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> T;
	while (T--) {
		memset(arr, 0, sizeof(arr));
		int ans = 0;
		cin >> N;
		for (int i = 0; i < N; i++) {
			int x; cin >> x;
			for (int j = x + 1; j <= N; j++) ans += arr[j];
			arr[x] = 1;
		}

		cout << ans << '\n';
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 3077 // C++] 임진왜란  (0) 2023.12.30
[BOJ 3075 // C++] Astromeeting  (1) 2023.12.29
[BOJ 3340 // C++] Multi-key Sorting  (0) 2023.12.27
[BOJ 2942 // C++] 퍼거슨과 사과  (1) 2023.12.26
[BOJ 2852 // C++] NBA 농구  (0) 2023.12.25

+ Recent posts