[BJ1759] 암호 만들기
✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/백준 알고리즘

[BJ1759] 암호 만들기

 백준 - 암호 만들기 

문제 링크

https://www.acmicpc.net/problem/1759

 

1759번: 암호 만들기

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

www.acmicpc.net

 

문제 입출력

4 6
a t c i s w
acis
acit
aciw
acst
acsw
actw
aist
aisw
aitw
astw
cist
cisw
citw
istw

 

문제 풀이

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


public class Main {
	static int L, C;
	static char[] arr, tgt;


	public static void main(String[] args) throws Exception {
		//System.setIn(new FileInputStream("input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer st = new StringTokenizer(br.readLine());
		L = Integer.parseInt(st.nextToken());
		C = Integer.parseInt(st.nextToken());
		arr = new char[C];
		tgt = new char[L];
		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < C; i++) arr[i] = st.nextToken().charAt(0);

		Arrays.sort(arr);
		// System.out.println(Arrays.toString(arr));

		perm(0, 0, 0);

	} // end main


	private static void perm(int dep, int idx, int select) {
		if (dep == L) {
			if (check()) {
				for (char c : tgt) System.out.print(c + "");
				System.out.println();
			}

			return;
		}

		for (int i = idx; i < C; i++) {
			if ((select & 1 << i) != 0) continue;
			tgt[dep] = arr[i];
			perm(dep + 1, i + 1, select | 1 << i);
		}

	} // end perm


	private static boolean check() {
		int mo = 0;
		int ja = 0;

		for (char c : tgt) {
			if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') mo++;
			else ja++;
		}

		if (mo >= 1 && ja >= 2) return true;

		return false;
	} // end check
}
  • 조합을 이용해서 푸는 문제입니다.
  • 조합을 만들고 나서 만약 조건에 부합하지 않는다면 출력을 하지않고, 조건에 부합한다면 출력을 합니다.

 

 

 

 

 

 

 

 

 

# 백준 암호 만들기 java # 백준 암호 만들기 조합


 

728x90

'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 백준 알고리즘' 카테고리의 다른 글

[BJ2469] 안전 영역  (0) 2022.09.17
[BJ2573] 빙산  (0) 2022.09.17
[BJ17135] 캐슬 디펜스  (0) 2022.09.12
[BJ1987] 알파벳  (0) 2022.09.11
[BJ1697] 숨바꼭질  (2) 2022.09.11