코드굽는 타자기
Programmers[62049] - 종이접기[Level3] 본문
링크
문제설명
- 종이접기 : 안으로접히면0 밖으로접히면1
문제풀이
- 규칙성 찾기
- sol(n) = sol(n-1) + 0 + sol(n-1)_180도 회전
문제코드
public class Solution {
public static int[] solution(int n) {
int[] answer;
if(n==1) return new int[] {0};
else {
int[] before = solution(n-1);
answer = new int[2*before.length + 1];
for (int i = 0; i < before.length; i++) {
answer[i] = before[i];
}
answer[before.length]=0;
for (int i = 0; i < before.length; i++) {
answer[2*before.length+1-1-i] = before[i]==0?1:0;
}
}
return answer;
}
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println(Arrays.toString(solution(i)));
}
}
}
아쉬운점
- Arrays.CopyRange써보려했으나 특정 범위에 다른 어레이의 특정 범위값을 저장하는 메서드는 없었다.
잘한점
- O(N) = 2^20 = 10^6
- int[1000000]을 만드는데에도 별 무리 없는듯
'알고리즘 > 수학' 카테고리의 다른 글
Programmers[62048] - 멀쩡한 사각형[Level2] (0) | 2020.04.29 |
---|
Comments