[문제]
https://www.acmicpc.net/problem/1342
[풀이]
문자열의 길이가 최대 10이어서 전부 확인해도 시간 내 해결이 가능하다. next_permutation 이라는 함수를 이용하는데, 이는 순열을 구하고 싶은 1-2-3-4의 배열이 있다고 가정했을 때 다음 순열인 1-2-4-3로 바뀌고 true를 반환해주는 함수이다.
[코드]
#include <iostream>
#include <vector>
#include <algorithm>
using namespace::std;
int main() {
//인접해 있는 문자가 모두 다른 행운의 문자열이 몇 개 나오는 지
string s;
cin >> s;
sort(s.begin(), s.end());
int answer=0;
do{
bool check = true;
for(int i=0; i<s.length()-1; i++){
if(s[i]==s[i+1]){
check = false;
break;
}
}
if(check){
answer++;
}
}while(next_permutation(s.begin(),s.end()));
cout << answer;
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[boj] 백준 1743 음식물 피하기 - DFS (0) | 2022.02.06 |
---|---|
[boj] 백준 1303 전쟁 - 전투 - DFS (0) | 2022.02.05 |
[boj] 백준 1389 케빈 베이컨의 6단계 법칙 (0) | 2022.02.03 |
[c++] 백준 1309 동물원 - 동적계획법 (0) | 2022.02.03 |
[c++] 백준 1263 시간 관리 - 그리디 (0) | 2022.01.31 |