알고리즘

[문제해결을 위한 창의적 알고리즘] 별 그리기 (고급, 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 


문제해결을 위한 창의적 알고리즘 목록