도형 만들기

<aside> 💡 입력값이 커질수록 도형 크기가 일정하게 커져야함.

</aside>

마름모

마름모는 네 변의 길이가 모두 같은 사각형이다.

public class Main{
    public static void main(String[] args) {
        int h = 5;
        for(int r = 0; r<h; r++){
            int emptyCnt = r;
            while(emptyCnt>0){
                System.out.print(" ");
                emptyCnt--;
            }
            int starCnt = (2*h-2*r-1);
            while(starCnt>0){
                System.out.print("*");
                starCnt--;
            }
            System.out.print("\\n");
        }
    }
}
public class Main{
    public static void main(String[] args) {
        int h = 3; //높이
				//정삼각형 그리기
        for(int r = 0; r<h;r++){
            int emptyCnt = h-r;
            while(emptyCnt>0){
                System.out.print(" ");
                emptyCnt--;
            }
            int starCnt = 2*r+1;
            while(starCnt>0){
                System.out.print("*");
                starCnt--;
            }
            System.out.print("\\n");
        }
				//중앙선 그리기
        for(int b=2*h+1;b>0;b--){
            System.out.print("*");       
        }
        System.out.print("\\n");
				//역삼각형 그리기
        for(int r=0; r<h; r++){
            int emptyCnt = r+1;
            while(emptyCnt>0){
                System.out.print(" ");
                emptyCnt--;
            }
            int starCnt = 2*h-2*r-1;
            while(starCnt>0){
                System.out.print("*");
                starCnt--;
            }
            System.out.print("\\n");
        }
    }
}

  1. int : 배열의 요소로 저장되는 변수 타입
  2. arr : 배열 이름 선언
  3. int[2][3] : 배열의 row, column 선언
int[][] arr = new int[2][3];

int k = 10;
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        arr[i][j] = k; // 인덱스를 이용한 초기화
        k += 10;
    }
}

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}
//10 20 30
//40 50 60
public class Main {
    public static void main(String[] args) {
        // r=radius
        int r = 3;
        int MAT_SIZE = 2 * r + 1;
        char[][] MAT = new char[MAT_SIZE][MAT_SIZE];
        for (int x = -r; x <= r; x++) {
            for (int y = -r; y <= r; y++) {
                if (x * x + y * y <= r * r) {
                    MAT[x + r][y + r] = '*';
                } else {
                    MAT[x + r][y + r] = ' ';
                }
            }
        }
        for (int x = 0; x < MAT_SIZE; x++) {
            for (int y = 0; y < MAT_SIZE; y++) {
                System.out.print(String.format("%2c", MAT[x][y]));
            }
            System.out.println("");
        }
    }
}

마치며

배열과 반복문을 통해 도형을 만들어보면서 어려우면 무한대로 어려워질 수 있다는 걸 느꼈다. 개념을 배울 땐 예시가 쉬워서 난이도가 높지 않다고 생각했는데, 중첩 반복문부터 2차원 배열까지 나오니 머리가 아팠다. 처음 마름모를 만들 때만 해도 마름모를 만들었으니 순서도며 모든 과정을 깨달은 것 같았는데 원을 그리며 다시 좌절했다.