[Java] 2661 좋은 수열

ideal dev·2022년 12월 19일
0

1. 문제 링크 및 문제

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

1-1 문제 요약

: 연속하지 않는 / 1,2,3으로 이루어진 / 가장 작은 수열

2. 해결 방법 ...

1,2,3 내부에서 재귀호출을 계속 해주면 될 것 같은데..
나는 좋은 수열인 지 판별하는 부분 코드가 굉장히 길었다.

벗뜨, 반복문을 통하여
1.2 비교하고, 12.34 비교하고, 123.456 이렇게 비교하며 좋은 수열인 지 한 방에 판별 가능!
다른 분들의 블로그를 참여하여 풀었지만, 까먹지 않게 기록기록

3. 코드

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;
    }
}

참고: https://bellog.tistory.com/43

0개의 댓글

관련 채용 정보