https://www.acmicpc.net/problem/10994
먼저 n이 무엇과 관련이 있을까 생각해보면 각 별이 출력되는 line과 관련 됨을 알 수 있다.
n=2이면 5줄
n=3이면 9줄
1 ,5 ,9, 13 ..... 4씩 차이가 나는 것을 알수 있다. 그러면 등차수열로 인하여 1+4(n-1) 등식이 나오고 4n-3개의 줄이 출력이 된다. 그리고 난후 별들의 각 라인을 출력하는 규칙이 있나 생각해보았지만 엄청나게 장황한 코드가 나와버렸다.if 문이 난무하고 조금은 지저분한 코드가 나왔다. 가만보니 규칙이 존재하는 것 같아 보이는게 n이 1씩 늘어갈 수록 n-1에서 출력된 *들에 겉에 애워싸는 형식으로 둘러싸여 있음을 발견하였다.
package Al_Study.set0_APPENDIX_별찍기;
import java.util.Scanner;
public class Star_19 {
static char star[][];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
n = 4 * n - 3; //가로 세로의 출력
star = new char[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
star[i][j] = ' ';
}
}
Star_19(0, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(star[i][j]);
}
System.out.println();
}
}
public static void Star_19(int s, int len) {
if (len<=s) return;
for (int i = s; i < len; i++) {
star[s][i] = '*'; //맨 위 가로줄
star[len - 1][i] = '*'; //맨 아래 가로줄
star[i][s] = '*'; //왼쪽 세로줄
star[i][len - 1] = '*'; //오른쪽 세로줄
}
// 별을 좌표라고 생각할 때 겉테두리의 사각형과 가장 근접한 사각형을 보았을 때 2만큼의 차이가 난다
Star_19(s + 2, len - 2);
}
}
'Algorithm > 백준' 카테고리의 다른 글
영우는 사기꾼? (0) | 2022.11.15 |
---|---|
BOJ1931_회의실 배정 (0) | 2021.10.24 |
PS 관련 유입 경로 (0) | 2021.03.27 |
백준__2229번 : 조 짜기 (골드 5) (0) | 2021.01.05 |
별 찍기 - 11 Java (0) | 2020.12.12 |
댓글