https://www.acmicpc.net/problem/2661
: 연속하지 않는 / 1,2,3으로 이루어진 / 가장 작은 수열
1,2,3 내부에서 재귀호출을 계속 해주면 될 것 같은데..
나는 좋은 수열인 지 판별하는 부분 코드가 굉장히 길었다.
벗뜨, 반복문을 통하여
1.2 비교하고, 12.34 비교하고, 123.456 이렇게 비교하며 좋은 수열인 지 한 방에 판별 가능!
다른 분들의 블로그를 참여하여 풀었지만, 까먹지 않게 기록기록
import java.util.*;
import java.io.*;
public class Main {
static int N;
public static void main(String[] args) throws IOException{
// 값 입력받기 -->
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
//<--
MakeArr("");
}
// 조건에 만족하는 좋은 수열 만들기
public static void MakeArr(String result){
if(result.length() == N) {
System.out.println(result);
System.exit(0);
}
for(int i=1;i<4;i++){
if(GoodArr(result + i)){
MakeArr(result + i);
}
}
}
// 좋은 수열 판단
public static boolean GoodArr(String s){
int length = s.length() /2;
for(int i=1;i<=length;i++){
if(s.substring(s.length()-i).equals(s.substring(s.length()-2*i,s.length()-i))){
return false;
}
}
return true;
}
}