반응형

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

 

2661번: 좋은수열

첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다.

www.acmicpc.net

 

	
package isaac;
import java.util.Scanner;
 
public class 좋은수열 {
    
    public static final int START = 1;
    public static final int END = 3;
    
    public static int len;
    public static boolean is_end = false;
    
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        len = sc.nextInt();
        
        backtracking("");
    }
    
    public static void backtracking(String str) {
        if(is_end) return;
        
        if(str.length() == len) {
            System.out.println(str);
            is_end = true;
            
            return;
        }
        
        for(int i= START; i <= END; i++) {
            if(isAble(str+i)) {
                backtracking(str+i);
            }
        }
    }
    public static boolean isAble(String str) {
        int len = str.length();

        for(int i = 1; i <= len/2; i++) {
            String front_str = str.substring(str.length()-i-i, str.length()-i);
            String behind_str = str.substring(str.length()-i, str.length());

            if(front_str.equals(behind_str)) return false;
        }
        
        return true;
    }
}
반응형

+ Recent posts