티스토리 뷰

Algorithm

백준_암호 만들기_1759

Young_J 2021. 3. 4. 23:35

// 알고리즘

1. 조합

 

2. 받은 문자열을 정렬

 

3. 조합

 

4. 완성된 문자열중 주어진 조건과 일치한다면 StringBuilder에 저장

 

5. 출력.

더보기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class 암호만들기_1759 {
	static int L, C;
	static char arr[], ans[];
	static StringBuilder sb;

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		sb = new StringBuilder();

		L = Integer.parseInt(st.nextToken());
		C = Integer.parseInt(st.nextToken());
		arr = new char[C];
		ans = new char[L];

		st = new StringTokenizer(br.readLine(), " ");
		for (int i = 0; i < C; i++) {
			arr[i] = st.nextToken().charAt(0);
		}

		// 알고리즘
		Arrays.sort(arr);

		cal(0, 0);
		System.out.println(sb.substring(0, sb.length() - 1));

	}

	private static void cal(int idx, int start) {
		if (idx == L) {

			check();

			return;
		}

		for (int i = start; i < C; i++) {
			ans[idx] = arr[i];
			cal(idx + 1, i + 1);
		}

	}

	private static void check() {
		int c = 0, v = 0;
		String str = "";
		for (int i = 0; i < L; i++) {
			if (ans[i] == 'a' || ans[i] == 'e' || ans[i] == 'i' || ans[i] == 'o' || ans[i] == 'u') {
				c++;
			} else {
				v++;
			}
			str += ans[i];
		}

		if (c < 1 || v < 2)
			return;
		sb.append(str + "\n");
	}

}

'Algorithm' 카테고리의 다른 글

백준_스택 수열_1874  (0) 2021.03.07
백준_스타트 링크_5014  (0) 2021.03.06
백준_컨베이어벨트_20055  (0) 2021.02.27
백준_줄 세우기_2252  (0) 2021.02.23
백준_가운데를 말해요_1655  (0) 2021.02.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함