백준 5874번: 소를 찾아라 (C++)

2023. 1. 26. 21:49알고리즘/조합

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

 

5874번: 소를 찾아라

천방지축 베시(소, 1세)는 외양간을 탈출해서 풀로 뒤덮인 산등성이에 숨었다. 농부인 존씨는 베시를 다시 잡기위해 온 풀숲을 샅샅히 뒤졌지만 찾지 못하였다. 안타깝게도 그는 베시를 찾는

www.acmicpc.net

 

풀이

앞다리( " (( " )가 앞에 있고 뒷다리( " )) " )가 뒤에 있는 조합을 찾는 문제.

 

우선, 각 경우를 배열에 담아주었고 반복문을 돌면서 앞다리보다 뒷다리가 뒤에 있으면 순서쌍의 갯수를 추가시켜주었다.

 

전체 코드

#include <iostream>
#include <string>
#include <vector>

using namespace std;

string N;
vector<int> front;
vector<int> back;
int sum = 0;

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

	cin >> N;

	for (int i = 0; i < N.size() - 1; i++) {
		if (N[i] == '(' && N[i + 1] == '(') front.push_back(i);
		if (N[i] == ')' && N[i + 1] == ')') back.push_back(i);
	}

	for (int i = 0; i < front.size(); i++) {
		for (int j = 0; j < back.size(); j++) {
			if (front[i] < back[j]) sum++;
		}
	}

	cout << sum;
}

'알고리즘 > 조합' 카테고리의 다른 글

백준 1759번: 암호 만들기 (C++)  (0) 2023.01.21