어흥

[백준 1342] 행운의 문자열 (C++) 본문

알고리즘/백준

[백준 1342] 행운의 문자열 (C++)

라이언납시오 2020. 6. 10. 16:59
728x90
반응형

문제 링크: https://www.acmicpc.net/problem/1342

 

1342번: 행운의 문자열

민식이와 준영이는 자기 방에서 문자열을 공부하고 있다. 민식이가 말하길 인접해 있는 모든 문자가 같지 않은 문자열을 행운의 문자열이라고 한다고 한다. 준영이는 문자열 S를 분석하기 시작�

www.acmicpc.net

1. 주의할 점

- 문자열을 V벡터에 입력받고, Next_Permutation을 하기 전에 Sort를 수행한다

 

2. 구현

- Next_Permutation을 수행하기 전에 반드시 Sort를 수행한다. 입력받는 문자열이 순서대로 들어오지 않기 때문이다(이해가 되지 않는다면 1234와 4321을 출력해보면 안다. 이때의 정답은 24가 올바르다)

- Next_Permutation을 수행하면서 현재 V벡터의 양옆이 같지 않은 문자라면 Result++한다

 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<char> v;
int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	string str;
	cin >> str;
	for (int i = 0; i < str.size(); i++)
		v.push_back(str[i]);
	sort(v.begin(), v.end());
	int result = 0;
	do {
		bool avail = true;
		for (int i = 0; i < v.size() - 1; i++) {
			if (v[i] == v[i + 1]) {
				avail = false;
				break;
			}
		}
		if (avail)
			result++;
	} while (next_permutation(v.begin(), v.end()));
	cout << result;
	return 0;
}
728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 3671] 산업 스파이의 편지 (C++)  (0) 2020.06.12
[백준 3967] 매직 스타 (C++)  (0) 2020.06.12
[백준 2002] 추월 (C++)  (0) 2020.06.10
[백준 14226] 이모티콘 (C++)  (0) 2020.06.09
[백준 12886] 돌 그룹 (C++)  (0) 2020.06.09
Comments