Notice
Recent Posts
Recent Comments
Link
«   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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 1759. 암호 만들기 본문

acmicpc

[BAEKJOON] 1759. 암호 만들기

코드와이 2021. 4. 4. 18:35

 

백트래킹

문제링크

www.acmicpc.net/problem/1759

 

1759번: 암호 만들기

첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.

www.acmicpc.net

 

package acmicpc.Gold5;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class 암호_만들기 {
	
	static int n, m;
	static char[] alph;
	static StringBuilder sb;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		sb = new StringBuilder();
		
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());
		
		alph = new char[m];
		
		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < m ; i++) {
			alph[i] = st.nextToken().charAt(0);
		}
		
		Arrays.sort(alph);
		
		comb(0,0,"");
		
		if(sb.length() > 0) sb.setLength(sb.length()-1);
		System.out.println(sb);
	}
	
	public static void comb(int cnt, int idx, String str) {
		
		if(cnt == n) {
			if(checking(str)) sb.append(str).append("\n");
			return;
		}
		
		for(int i = idx ; i < m ; i++) {
			comb(cnt+1, i+1, str+alph[i]);
		}
	}
	
	public static boolean checking(String str) {
		char[] vowel = {'a','e','i','o','u'};
		int v = 0;		// 모음 갯수
		int c = 0;		// 자음 갯수
		
		for(char s : str.toCharArray()) {
			boolean flag = true;
			for(char vo : vowel) {
				if(vo == s) {
					v++;
					flag = false;
					break;
				}
			}
			if(flag)
				c++;
		}

		return v >= 1 && c >=2 ? true : false;
		
	}
	
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 14888. 연산자 끼워넣기  (0) 2021.04.04
[BAEKJOON] 9663. N-Queen  (0) 2021.04.04
[BAEKJOON] 1932. 정수 삼각형  (0) 2021.03.27
[BAEKJOON] 17472. 다리 만들기2  (0) 2021.03.26
[BAEKJOON] 14502. 연구소  (0) 2021.03.26