코테/백준

[백준/JAVA] 10994번: 별 찍기 - 19

imname1am 2024. 1. 13. 00:49
반응형

📖 문제

 

10994번: 별 찍기 - 19

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net

 

 

💡  풀이 방식

• 재귀

. 재귀함수의 인자로는 (시작 행 위치, 가로줄 길이)를 가져간다.

. 반복문을 통해 시작 위치부터 가로줄 길이까지 사각형 위치에 있는 칸을 별로 채운다.  (맨 위 가로줄, 맨 아래 가로줄, 왼쪽 세로줄, 오른쪽 세로줄)

. 반복문이 끝나면, 시작하는 행의 위치는 2 더하고, 가로줄의 길이는 2씩 줄여 재귀함수를 돌린다. (그래야 안쪽에 줄어든 길이만큼 별을 생성할 수 있다.)

 

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.*;
import java.io.*;
 
public class Main {
    static int N;
    static char[][] star;
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        N = Integer.parseInt(br.readLine());
        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] = ' ';
            }
        }
 
        makeStar(0, N); // 별 찍기
 
        // 출력하기
        StringBuilder sb = new StringBuilder();
        for(char[] ch : star) {
            for(char c : ch) {
                sb.append(c);
            }
            sb.append("\n");
        }
 
        System.out.println(sb);
    }
 
    // 사각형 모양대로 별 찍는 메소드
    private static void makeStar(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= '*';  // 오른쪽 세로줄
        }
 
        makeStar(s + 2, len - 2);   // 재귀
    }
}
 
cs

 

 


💦 어려웠던 점

한 행씩 연달아 가며 별 채울 생각했는데 그것이 아니었다,,

규칙을 찾고 잘 하자,,

 

 

1회독 2회독 3회독 4회독 5회독
V 240620      

(참고)

 

별 찍기-19 Java

https://www.acmicpc.net/problem/10994 10994번: 별 찍기 - 19 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 먼저 n이 무엇과 관련이 있을까 생각해보면 각 별이 출력되는 line과 관련 됨을 알

byeongyeon.tistory.com

 

반응형