일단 시작해보는 블로그

[알고리즘_풀이] 종이접기 - 프로그래머스 java 본문

CS/알고리즘 풀이

[알고리즘_풀이] 종이접기 - 프로그래머스 java

Selina Park 2020. 3. 31. 12:10

https://programmers.co.kr/learn/courses/30/lessons/62049

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {
  public int[] solution(int n) {
      // 접혀질 개수 : 2^n-1
      int size = (int)Math.pow(2, n)-1;
      int[] answer = new int[size];
      
      String first = "0";
      String flag = "1"; // "0" 또는 "1"로 계속 바뀜
      for(int i=2; i<=n; i++) {
          flag = "1";
          StringBuilder tmp = new StringBuilder("0");
          for(int j=0; j<first.length(); j++) {
              tmp.append(first.charAt(j) + flag);
              flag = flag.equals("1") ? "0" : "1"; 
          }
          first = tmp.toString();
      }
      
      // first를 배열로 만들기
      for(int i=0; i<first.length(); i++) {
          answer[i] = first.charAt(i) - 48;
      }
      
      return answer;
  }
}
Comments