티스토리 뷰

728x90
반응형

문제 요약

문제풀이

 이번 문제는 간단한 재귀호춣 구현이다. 구현은 아래와 같이 하면된다.

  1. 끝에 숫자가 1일때만 0추가하고 재귀호출한다.
  2. 뒤에 1을 추가하고 재귀호출한다.
  3. 문자열길이가 n일때 리스트에 추가한다.

 재귀호출 기본적인 문제라서 문제 푸는데는 어렵지 않다. 위에 처럼 구현 하면 시간 복잡도는 O(2^n)만큼 나온다.

Code

Python

class Solution:
    def validStrings(self, n: int) -> List[str]:
        result = []
        # 재귀함수
        def recursion(s: str):
            if len(s) == n:
                result.append(s)
                return

            # 뒤에 1이면 0을 추가한다.
            if(len(s) == 0 or s[-1] == '1'):
                recursion(s + '0')
            recursion(s + '1')

        recursion("")
        return result

Java

class Solution {
     List<String> result;
    int length;

    public List<String> validStrings(int n) {
        result = new ArrayList<>();
        length = n;
        recursion( "");
        return result;
    }

    /*
     * 재귀 호출 함수
     */
    public void recursion( String s){
        if(s.length() == length){
            result.add(s);
            return;
        }

        // 끝에 숫자가 1일때 뒤에 0을 추가 한다.
        if(s.isEmpty() || s.charAt(s.length() - 1) == '1'){
            recursion( s + '0');
        }
        recursion( s + '1');

    }
}
728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함