https://programmers.co.kr/learn/courses/30/lessons/62049
import java.util.Arrays;
public class Programmers1 {
public static void main(String[] args) {
System.out.println(Arrays.toString(solution(19)));
}
public static int[] solution(int n) {
return getAnswer(n, 1, new int[]{0});
}
public static int[] getAnswer(int n, int loop, int[] value) {
if (loop != n) {
int[] array = new int[value.length * 2 + 1];
for (int i = 0; i < value.length; i++) {
array[i] = value[i];
array[array.length - 1 - i] = value[i] == 0 ? 1 : 0;
}
array[value.length] = 0;
return getAnswer(n, ++loop, array);
} else {
return value;
}
}
}
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
n이 20이하여서 괜찮지만 30만 넘어가도 메소드 스택이 많이 쌓이게 되서 위험하니, 꼬리재귀로 바꾸는 것도 좋아보인다