[BOJ] 1759.์ํธ๋ง๋ค๊ธฐ (Java)
by ๋๋ถ๋
1759๋ฒ: ์ํธ ๋ง๋ค๊ธฐ
์ฒซ์งธ ์ค์ ๋ ์ ์ L, C๊ฐ ์ฃผ์ด์ง๋ค. (3 ≤ L ≤ C ≤ 15) ๋ค์ ์ค์๋ C๊ฐ์ ๋ฌธ์๋ค์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋ฌธ์๋ค์ ์ํ๋ฒณ ์๋ฌธ์์ด๋ฉฐ, ์ค๋ณต๋๋ ๊ฒ์ ์๋ค.
www.acmicpc.net
์ด ๋ฌธ์ ๋ ์ฃผ์ด์ง C๊ฐ์ ๋ฌธ์๋ฅผ L ๊ธธ์ด์ ์ํธ๋ก ๋ง๋๋ ๋ฌธ์ ์ด๋ฉฐ,
์ํธ๋ ์ต์ ํ ๊ฐ์ ๋ชจ์๊ณผ ์ต์ ๋ ๊ฐ์ ์์์ ํฌํจํ ์ ๋ ฌ๋ ํํ๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๋ธ๋ฃจํธํฌ์ค๋ฅผ ์ด์ฉํด์ ํ๋ฉด ๋๋ ๋ฌธ์ ๋ผ ํธ์ํ ๋ง์์ผ๋ก ํ์๋ค์ ๐๐
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int L;
static int C;
static char[] alpha;
static boolean[] visited;
static void printPassowrd() throws Exception {
String answer = "";
for (int i = 0; i < C; i++)
if (visited[i])
answer += alpha[i];
System.out.println(answer);
}
/** checkVowel
*
* @param alpha ํ์ธํ๋ ค๋ ๋ฌธ์
* @return ๋ชจ์์ธ์ง ํ์ธ ๊ฒฐ๊ณผ ๋ฐํ
*/
static boolean checkVowel(char alpha) {
if (alpha == 'a' || alpha == 'e' || alpha == 'i' || alpha == 'o' || alpha == 'u')
return true;
else
return false;
}
/** createPassword
*
* @param len ์ํธ ๊ธธ์ด
* @param idx for๋ฌธ ์์ํ idx ๋ฒํธ
* @param vowel ๋ชจ์ ์
* @param consonants ์์ ์
*/
static void createPassword(int len, int idx, int vowel, int consonants) throws Exception {
// ์กฐ๊ฑด ๋ง์กฑ ์ ์ถ๋ ฅ
if (len == L) {
if (vowel < 1 || consonants < 2) // ์กฐ๊ฑด์ ํด๋นํ์ง ์์ ๊ฒฝ์ฐ ๋ฐํ
return;
printPassowrd();
return;
}
for (int i = idx; i < C; i++) {
if (!visited[i]) {
visited[i] = true; // ๋ฐฉ๋ฌธํ ์ํ๋ฒณ ๋ฒํธ
if (checkVowel(alpha[i]))
createPassword(len + 1, i + 1, vowel + 1, consonants);
else
createPassword(len + 1, i + 1, vowel, consonants + 1);
visited[i] = false; // ๋ฐฉ๋ฌธ ํ์ ์ ๊ฑฐ
}
}
}
public static void main(String[] args) throws Exception {
StringTokenizer st = new StringTokenizer(br.readLine());
L = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
alpha = new char[C]; // ์
๋ ฅ ๋ฐ์ ๋ฌธ์ ์ ์ฅ
visited = new boolean[C]; // ๋ฐฉ๋ฌธ ์ฌ๋ถ ํ์
st = new StringTokenizer(br.readLine());
for (int i = 0; i < C; i++)
alpha[i] = st.nextToken().charAt(0); // ํ๊ธ์์ฉ ๋ฐ์์์ char๋ก ๋ณ๊ฒฝ
Arrays.sort(alpha); // ์ฌ์ ์์ผ๋ก ๋ง๋ค๊ธฐ ์ํด sort ์ํด
createPassword(0, 0, 0, 0);
br.close();
}
}
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 2016.๋ฏธํ ์ฃผ์ ํ๊ธฐ (0) | 2022.06.13 |
---|---|
[BOJ] 2615.์ค๋ชฉ (Java) (0) | 2022.04.21 |
[BOJ] 12094.A์ B (Java) (0) | 2021.06.10 |
[BOJ] 10159.์ ์ธ (Java) (0) | 2021.05.02 |
[BOJ] 1043.๊ฑฐ์ง๋ง (Java) (0) | 2021.04.30 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
๋๋ถ๋์ Devlog
๋๋ถ๋