본문 바로가기

알고리즘

D+10 1759 암호 만들기

1759 암호만들기 - 골드 5

아이디어는 재귀전 캐릭터를 더한후 재귀후 돌아오면 맨끝에 더해줬던 캐릭터를 빼준다. (빼줘서 다음 조합의 캐릭터를 만들수 있어야한다.)

**추가로 출력에대한 자음 모음 기준이 있다.

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

 

1759번: 암호 만들기

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

www.acmicpc.net

import java.io.*;
import java.util.*;

public class Main {
   
    static int l = 0;
    static int c = 0;
    static char []arr;
    public static void main(String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        l = Integer.parseInt(st.nextToken());
        c = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        arr = new char[c];
        for(int i=0; i<c; i++){
            arr[i] = st.nextToken().charAt(0); //string to char 확인필요
        }
        String ans = "";
        Arrays.sort(arr); // 알파벳순으로 정렬
        findAllpw(ans,0);
    
    } // main method end
    private static void findAllpw(String ans, int now){
        
        if(ans.length()==l){
            int count =0;
        	for(int j=0; j<l;  j++){
        		if(ans.charAt(j)=='a'||ans.charAt(j)=='i'||ans.charAt(j)=='e'||ans.charAt(j)=='o'||ans.charAt(j)=='u'){
            		count++;	
            	}
        	}
            if(ans.length()- count>=2 &&count>=1){
            	System.out.println(ans);
            }
            
            //ans
            return;
        }
        
        for(int i=now; i<c; i++){
            ans += arr[i]+"";
            findAllpw(ans,i+1);
            ans = ans.substring(0,ans.length()-1);
        }
    }
}// class end

 

* str.substring(포함,불포함) 포함부터 ~ 불포함까지

  str.substring(A) A부터 문자열 끝까지

** String to char : str.char(0); char 됨.

'알고리즘' 카테고리의 다른 글

D+11 백준 2661 좋은수열  (0) 2021.10.27
D+9 백준 14888 연산자 끼워넣기  (0) 2021.10.15
D+8 백준 2581 소수  (0) 2021.10.13
D+8 백준 1292 쉽게 푸는 문제  (0) 2021.10.13
D+7 백준 1978 소수찾기  (0) 2021.10.12