곽로그
[백준 2448] 별찍기-11 (시간초과) 본문
반응형
접근법
재귀로 풀어야 한다는 건 알았지만 재귀함수에 어떻게 인자를 넘겨야할지를 모르겠어서 구글링해봤더니 아주 친절하게 알려주시는 유투브를 발견했다.
이 분의 설명을 바탕으로 짠 코드는 아래와 같은데 문제는 시간초과가 난다는 거다.
import java.util.Scanner;
public class Main {
public static char starArray[][]=new char[3072][6143];
public static void drawStar(int size, int x, int y) {
if(size==3) {
//별을 그린다
starArray[y][x]='*';
starArray[y+1][x-1]='*';
starArray[y+1][x+1]='*';
starArray[y+2][x-2]='*';
starArray[y+2][x-1]='*';
starArray[y+2][x]='*';
starArray[y+2][x+1]='*';
starArray[y+2][x+2]='*';
return;
}
else {
drawStar(size/2,x,y);
drawStar(size/2,x-(size/2),y+size/2);
drawStar(size/2,x+(size/2),y+size/2);
}
}
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
StringBuilder str=new StringBuilder();
int n=in.nextInt();
drawStar(n,n-1,0);
for(int i=0;i<n;i++) {
for(int j=0;j<2*n-1;j++) {
System.out.print(starArray[i][j]);
}
System.out.println();
}
}
}
시간초과 문제를 해결하려면 출력문에서 StringBuilder를 사용하거나 동적프로그래밍을 하면 된다고하는데 아직 거기까지는 모르니 일단 keep
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 2292] 벌집 (0) | 2019.04.25 |
---|---|
[백준 10039] 평균점수 (0) | 2019.04.25 |
[백준 8958] OX퀴즈 (0) | 2019.04.24 |
[백준 2577] 숫자의 개수 (0) | 2019.04.22 |
[백준 1065] 한수 (0) | 2019.04.19 |
Comments