Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 2661] 좋은수열 본문
반응형
최소값을 구해야 하므로 조건을 만족하는 수 중 가장 작은것을 우선 출력하게 해야한다.
그리디하게 생각해보면 첫번째 수는 무조건 1이 된다.
수를 이어붙일 때마다 좋은 수열인지 여부를 체크해준다.
11 : 수의 길이가 2이면 1번만 검사하면 된다.
1212 : 수의 길이가 4이면 밑줄친 1과 2 검사 1번 + 12, 12 검사 1번, 총 2번해야 한다.
123123 : 수의 길이가 6이면 2,3 / 31, 23 / 123, 123 총 3번해야 한다.
따라서 검사 횟수는 수의 길이/2이다.
검사할 인덱스 지정은 의식의 흐름대로 하여서 로직을 보는 편이 좋을 듯 하다.
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());
dfs(1, "1");
}
public static void dfs(int idx, String s) {
if(n == idx) {
System.out.println(s);
System.exit(0);
}
for(int i=1; i<=3; i++)
if(goodSeq(s + i))
dfs(idx+1, s+i);
}
public static boolean goodSeq(String str) {
int s = str.length()-1;
int e = str.length();
for(int i=1; i<=str.length()/2; i++) {
if(str.substring(s-i, e-i).equals(str.substring(s, e)))
return false;
s--;
}
return true;
}
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 1405] 미친 로봇 (0) | 2019.06.16 |
---|---|
[백준 17136] 색종이 붙이기 (0) | 2019.06.13 |
[백준 10597] 순열장난 (0) | 2019.06.13 |
[백준 2580] 스도쿠 (0) | 2019.06.13 |
[백준 9663] N-Queen (0) | 2019.06.12 |
Comments