반응형
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static int N;
public static void main(String[] args) throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
N=Integer.parseInt(br.readLine());
backtracking("");
}
public static void backtracking(String str){
for(int i=1;i<=3;i++){
if(isGoodSeq(str)){
if(str.length()==N){
System.out.println(str);
System.exit(0);
}
backtracking(str+i);
}
}
}
public static boolean isGoodSeq(String str){
int level=str.length()/2;
for(int i=1;i<=level;i++){
if(str.isEmpty()) return true;
String front_str = str.substring(str.length()-i-i, str.length()-i);
String behind_str = str.substring(str.length()-i);
if(front_str.equals(behind_str)) return false;
}
return true;
}
}
문제 풀이 : 백트레킹을 이용하여 푸는데 isGoodSeq에서 이전에 확인되었던거는 하지 않고 str의 뒤쪽이 좋은수열인지 아닌지만 판단하면 된다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
백준 15886번 치킨 배달 자바 (0) | 2021.05.27 |
---|---|
프로그래머스 2개 이하로 다른 비트 (월간 코드 챌린지 시즌2 문제) 자바 (0) | 2021.05.22 |
[알고리즘] 백준 14889번 스타트와 링크 Java 자바 (0) | 2021.05.19 |
[알고리즘] 백준 2609번 최대공약수와 최소공배수 Java 자바 (0) | 2021.05.17 |
[알고리즘] 백준 1929번 소수 구하기 Java 자바 (0) | 2021.05.17 |
댓글