백준 - 별 찍기 19 10994번 [3일차]
시간제한 | 메모리 제한 |
1초 | 256MB |
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
N = 3
N = 4
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 차례대로 별을 출력한다.
나의코드
package day3;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Scanner;
public class Solution3 {
static String [][] num;
static int x,y;
public static void main(String[] args) throws IOException {
// 별찍기 19 - 10994번
// 01234
// 0 4
// 0 2 4
// 0 4
// 01234
// 행y 열x +2 씩
// 첫번째/ 마지막 열에는 전부 다 찍기
// 나머지 열에는 첫번째와 마지막만 찍기
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
num = new String[4 * (n - 1) + 1][4 * (n - 1) + 1];
x=0; //x축 죄표
y=0; //y축 좌표
int total = 4 * (n - 1) + 1;
// null 값이 안들어가게 공백(" ") 넣어주기
for(int i = 0;i < total; i++){
for(int j = 0;j < total; j++){
num[i][j] = " ";
}
}
line(n);
// 출력
for(int i = 0;i < total; i++){
for(int j = 0;j < total; j++){
System.out.print(num[i][j]);
}
System.out.println();
}
}
// * 모양 배열에 넣어주는 함수
static void line(int n){
if(n!=0){
int total = 4 * (n - 1) + 1; // n값의 별의 길이
// 첫번째 모든 자리 * 넣기
for (int i = 0; i <total; i++) {
//첫번째줄 출력
num[x][y+i] = "*";
// 마지막줄 출력
num[x+total -1][y+i] = "*";
}
// 나머지 가장자리 찍어주기
for (int i = 0; i < total -1; i++) {
num[x+1+i][y] = "*";
num[x+1+i][y+total-1] = "*";
}
x +=2;
y +=2;
line(n - 1);
}
}
}
테두리를 그리면서 안쪽으로 -2씩 들어가며 테두리를 반복해서 그리는것이다!
여기서 포인트는 별이 찍혀있는 x축과 Y축의 규칙을 찾는것이다!
나는 규칙을 아래와 같이 찾았는데
int total = 4 * (n - 1) + 1;
이렇게 간단하게 작성할수 있었다
int total = (n*4)-3
for문도 두개씩 작성했는데 이렇게 간단하게 줄일수도 있었다
for (int i = 1; i <= I; i++) { // n번 사각형 그리기
for (int j = index; j < (n - index); j++) {
array[index][j] = '*'; // 사각형 맨 윗변 / 왼쪽 -> 오른쪽으로 이동하며 윗변 채움
array[n - index -1][j] ='*'; // 사각형 맨 아랫변 / 왼쪽 -> 오른쪽으로 이동하며 아랫변 채움
array[j][index] = '*'; // 사각형 맨 왼쪽 / 위 -> 아래로 이동하며 옆변 채움
array[j][n - index - 1] = '*'; // 사각형 맨 오른쪽 / 위 -> 아래로 이동하며 옆변 채움
}
index += 2; // 작은 정사각형 안쪽에 그리기 위해 값 변경
}
'Algorithm > 코딩테스트' 카테고리의 다른 글
[코딩테스트] 백준 - 문자열 반복 (0) | 2024.07.20 |
---|---|
[코딩테스트] 백준 - 신나는 함수 실행 (0) | 2024.07.19 |
[코딩테스트] 백준 - 알고리즘 수업 - 피보나치 수 2 (0) | 2024.07.19 |
[코딩테스트] 백준 - 알고리즘 수업 - 피보나치 수 1 (0) | 2024.07.19 |
[코딩테스트] 백준 - 수들의 합 5 (0) | 2024.07.18 |