어흥
[백준 1342] 행운의 문자열 (C++) 본문
728x90
반응형
문제 링크: https://www.acmicpc.net/problem/1342
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