마름모 별찍기

Yullc·2025년 3월 8일
post-thumbnail

오늘은 반복문의 개념을 확실히 학습하고자 마름모 별찍기를 분석해 볼거야
처음 봤을때는 이해가 잘 안되길래 코드 한줄씩 분석하고 코드가 어떻게 실행되는지 알아봤어 이제 코드를 보자면

class Main {
    public static void main(String[] args) {

        int n = 4; // 정수 n만 들어갈 수 있는 변수에 4를 넣음

        for (int i = 1; i <= n; i++) {  // 정수 i를 생성해 n번까지 즉 4번 반복문을 실행
            for (int j = i; j < n; j++) { // j를 생성해 정수 i를 넣음 
            // 반복을 돌고 n미만으로 즉3번까지 반복을 실행
                System.out.print(""); // 가로로 빈칸을 출력

            } // 두번째 for문은 그러므로 처음에는 빈칸이 3번, 그다음 출력때는 2번, 다음은 1번 출력
            for (int k = 1; k <= (2 * i - 1); k++) { // 변수 k에 값 1을 넣음, 
            //변수 k는 i=1이면 1, i=2면 3, i=3이면,5,i=4면,7 까지 반복문을 수행
                System.out.print("*");// 가로로 *을 출력
            } // 세번째 for문은 *을 1개, 3개, 5개, 7개를 출력한다는 문장임
            System.out.println(); // 줄바꿈

        }// 그러므로 반복문을 수행할 때 첫번째는 빈칸3개에 *하나, 
        //빈칸2개에 *3개 빈킨 1개에 *5개 다음은 *만 7개 찍히는 모습을 볼 수 있어서 트리형태의 값을 볼 수 있음

        for (int i = n - 1; i >= 1; i--) { // 변수 i는 n-1 즉 3을 집어넣음 i는3부터 1까지 반복 수행 , i는 1씩 감소
            for (int k = n; k > i; k--) { // 변수k는 n 즉 4를 넣음. k는 4부터 i초과까지 반복 수행, k는 1씩 감소
               System.out.print(""); // 가로로 빈칸 출력
            } //k의 초기값은 4이고 i는 3 이기때문에 빈칸은 한번만 출력된다. 3>3은 거짓이니까! 
            //그러므로 i가 3->2->1로 감소함에 따라 빈킨이 1개->2개->3개로 증가
            for (int k =1;  k <= (2 * i - 1); k++) { //변수 k에 1을 넣고 i=3부터 시작이니까 
            //k는 i=3일때 5번 반복 되고 i=2일때는 3, i=1일때는 1이 나오도록 *을 찍어
                System.out.print("*");// 가로로 * 출력

            }// 결론은 행의 갯수가 늘어날수록 빈칸은 증가되고 *은 감소되는 현상을 볼 수 있어
            System.out.println();
        }

    }
}
나는 처음 삼각형 하나랑 역삼각형 하나를 만든다고 생각을 하고 분석을 해보았어
  • 처음에 row같은 n변수를 4줄로 만들겠다 라는 생각을 했어
  • 그리고 반복문을 돌면서 빈칸을 가로로 찍는거지. 그리고 별을 빈칸 뒤에 2개씩 증가시키면서 찍는다고 생각을 했어
  • 그래서 for문을 돌 때 k <= (2 * i - 1); 이와같은 조건을 붙여서 삼각형이 되도록 만들었지
  • 첫번째 for문은 삼각형을 만들 수 있는 줄을 나타낸거고 두번째 for문은 빈칸을 처음에 3->2->1 형태로 감소되면서 찍고 세번째 for문은 *을 1->3->5->7형태로 증가시켜 최종 삼각형을 만들었어
  • 그리고 이제 역삼각형인데, 시작할때 n-1로 초기값을 주었어 i=3이지.
  • i=3부터 감소되니까 반대로 빈칸은1->2->3개형태로 증가가되고
  • 그리고 *을 5->3->1개 순서대로 감소가 되는걸 알 수 있어.
  • 그리고 꿀팁인데 나는 마름모를 분석할 때 이해가 잘 안돼서 빈칸 대신 +,-를 사용해서 분석했어
profile
아자아자자

1개의 댓글

comment-user-thumbnail
2025년 3월 8일

잘 보고 갑니다

답글 달기