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

 

이번에 볼 문제는 백준 10432번 문제인 데이터 스트림의 섬이다.
문제는 아래 링크를 확인하자.

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

 

10432번: 데이터 스트림의 섬

n개의 정수 수열 a1, a2, a3, ..., an에 대해, 섬이란 다음 조건을 만족하는 연속된 부분수열을 말한다. 섬의 모든 수는 부분수열이 시작하기 직전 수보다 크다. 섬의 모든 수는 부분수열이 끝난 직후

www.acmicpc.net

가능한 모든 연속한 부분수열(단, 이전 원소와 다음 원소가 존재한다)에 대해 그 부분수열이 "섬"인지를 각 원소의 대소비교를 통해 판단하는 코드를 작성하는 것으로 문제를 해결할 수 있다. 모든 연속한 부분수열은 시작 원소와 끝 원소를 나타내는 변수를 이용한 이중반복문을 이용해 쉽게 접근할 수 있다.

 

주어지는 수열의 크기가 12로 매우 작으므로 이와 같은 브루트포스 풀이로도 충분히 문제를 해결할 수 있음을 알 수 있다.

 

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

#include <iostream>
using namespace std;

int P;
int arr[12];

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

	cin >> P;
	while (P--) {
		int T, ans = 0; cin >> T;
		for (int i = 0; i < 12; i++) cin >> arr[i];
		for (int L = 0; L < 12; L++) {
			for (int R = L + 2; R < 12; R++) {
				bool chk = 1;
				int val = max(arr[L], arr[R]);
				for (int k = L + 1; k < R; k++) {
					if (arr[k] <= val) {
						chk = 0;
						break;
					}
				}

				if (chk) ans++;
			}
		}

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

+ Recent posts