Problem Solving/Baekjoon
[백준] 1342 행운의 문자열 - Brute Force / Java
graycode
2023. 7. 18. 22:58
• 문제 링크
1342번: 행운의 문자열
민식이와 준영이는 자기 방에서 문자열을 공부하고 있다. 민식이가 말하길 인접해 있는 모든 문자가 같지 않은 문자열을 행운의 문자열이라고 한다고 한다. 준영이는 문자열 S를 분석하기 시작
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static int len, cnt;
static int[] arr = new int[26];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = br.readLine();
len = s.length();
for (int i = 0; i < len; i++)
arr[s.charAt(i) - 'a']++;
dfs(0, 0);
bw.write(String.valueOf(cnt));
bw.flush();
}
private static void dfs(int prev, int depth) {
if (depth == len) {
cnt++;
return;
}
for (int i = 0; i < 26; i++) {
if (arr[i] == 0 || (prev == i && depth != 0)) continue;
arr[i]--;
dfs(i, depth + 1);
arr[i]++;
}
}
}