알고리즘
[문제해결을 위한 창의적 알고리즘] 별 그리기 (고급, p24)
nevermet
2016. 9. 15. 12:29
이 문제는 비교적 간단한 알고리즘으로 풀이의 설명을 잘 읽어보면 쉽게 이해할 수 있는 문제이다. 다만, 자바의 char array를 출력할 때, 포인터 주소값을 지정하는 것은 어려우므로 array 처음부터 별을 넣도록 코드를 수정하였다.
import java.util.Scanner;
public class DrawStarSol28 {
// 별 문자열 최대값
public static final int MAXN = 10000;
// 별 문자 배열 선언
public static char[] star = new char[MAXN];
public static void f(int n) {
if (n > 0) {
// 재귀적으로 n이 1이 될때까지 호출
f(n-1);
// star 배열을 index 0부터 사용하기 위해 n-1 지정
star[n-1]='*';
System.out.println(star);
}
}
public static void main(String[] args) {
int n;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
// 자원 사용후 즉시 해제
sc.close();
f(n);
return;
}
}
Big O(n) : n은 가장 긴 별 문자 길이
GitHub: https://github.com/nevermet/CreativeAlgorithmAdv/blob/master/DrawStarSol28.java