전체 코드

#include <iostream>
using namespace std;

int main()
{
    // 🪐 [별 찍기]
#pragma region 별찍기
    int input;
    cout << "정수를 입력해주세요. : ";
    cin >> input;  // 사용자에게 정수 입력받기 (별의 크기)

    // 1️⃣ 정사각형 별 찍기 (N x N)
    for (int i = 0; i < input; i++)   // 행 반복 (총 input줄 출력)
    {
        for (int j = 0; j < input; j++) // 열 반복 (한 줄당 input개의 별 출력)
        {
            cout << "*";   // 별 출력
        }
        cout << endl;   // 줄바꿈
    }

    cout << "-----------------------" << endl;

    // 2️⃣ 오름차순 삼각형 별 찍기
    for (int i = 1; i <= input; i++)   // 1줄~input줄까지 반복
    {
        for (int j = 0; j < i; j++)   // 해당 줄에 맞는 개수만큼 별 출력
        {
            cout << "*";
        }
        cout << endl;
    }

    cout << "-----------------------" << endl;

    // 3️⃣ 내림차순 역삼각형 별 찍기 (방법1)
    for (int i = input; i > 0; i--)    // input줄부터 1줄까지 반복
    {
        for (int j = i; j > 0; j--)   // 해당 줄에 맞는 개수만큼 별 출력
        {
            cout << "*";
        }
        cout << endl;
    }

    cout << "-----------------------" << endl;

    // 4️⃣ 내림차순 역삼각형 별 찍기 (방법2 - 규칙을 수학적으로 표현)
    for (int i = 0; i < input; i++)    // 0줄부터 input-1줄까지 반복
    {
        for (int j = 0; j < (input - i); j++)  // (input-i)개 만큼 별 출력
        {
            cout << "*";
        }
        cout << endl;
    }

    cout << "-----------------------" << endl;
#pragma endregion

    // 🪐 [구구단 출력]
#pragma region 구구단
    // 5️⃣ 2단부터 9단까지 구구단 출력
    for (int i = 2; i <= 9; i++)   // 2단~9단 반복
    {
        for (int j = 1; j <= 9; j++)   // 각 단마다 1~9까지 곱셈
        {
            cout << i << " * " << j << " = " << (i * j) << endl;
        }
        cout << endl;   // 각 단마다 줄바꿈 추가
    }
#pragma endregion
}

📌 1. 별 찍기 - 정사각형

  • 전체 N줄
  • 각 줄마다 N개의 별 출력
  • 이중 for문 필수

메모리 흐름

변수내용
i행 번호 (0~input-1)
j열 번호 (0~input-1)
input입력받은 크기

📌 2. 별 찍기 - 오름차순 삼각형

  • 첫 줄 1개, 둘째 줄 2개... N번째 줄 N개
  • 규칙: 한 줄의 별 개수 = 줄 번호 + 1

📌 3. 별 찍기 - 내림차순 역삼각형

방법1 - 직접 감소하는 루프

  • N개부터 시작해, 1개까지 줄어듦
  • for (int i = input; i > 0; i--)

방법2 - 수학적 규칙 이용

  • (input-i) 형태로 별 개수 계산
  • 수학적 규칙이 눈에 보이므로 더 좋은 방법

📌 4. 구구단 출력

  • 2단부터 9단까지 출력
  • 각 단마다 1~9까지 곱 출력
  • 이중 for문 필수

💡 핵심 포인트 정리

주제설명
정사각형N x N 구조, 별 개수 일정
오름차순 삼각형행이 내려갈수록 별 개수 증가
내림차순 삼각형행이 내려갈수록 별 개수 감소
구구단2~9단 출력, 이중 for문 구조

📦 입출력 설명 (cin, cout)

기능설명
cin사용자 입력 받기
cout화면 출력하기
endl줄바꿈 (flush 포함)

🛠️ 디스어셈블리 시각 (for 루프의 변환 예)

mov i, 0
cmp i, input
jge loop_end
...
inc i
jmp loop_start

🧵 이중 for문 흐름 정리

외부루프내부루프출력결과
i=0j=0~input-1별 input개
i=1j=0~input-1별 input개
.........

🚨 실수 방지 팁

실수 유형해결책
무한루프증가식 누락 주의 (count++ 등)
출력 위치 혼동cout 위치 확인
줄바꿈 누락cout << endl; 빠짐 확인
변수 초기화매 패턴마다 count 등 초기화 필요

🧙‍♂️ 퀴즈

문제정답
삼각형 줄별 별 개수 공식은?i+1
정사각형 별 개수 공식은?input x input
구구단에서 외부루프는?단 번호
구구단에서 내부루프는?곱하는 수

🛠️ 연습문제 정리표

문제특징
정사각형 별N x N 이중 for문
오름차순 삼각형i+1개 출력
내림차순 역삼각형input-i개 출력
구구단2~9단 출력

🔥 글을 마치며

  • 별 찍기와 구구단은 반복문 기초 연습의 정석 문제입니다.
  • 단순히 문제만 풀지 말고, 메모리 흐름, 루프 흐름, 디스어셈블리 변환 과정까지 연계해 보세요.
  • 특히 이중 for문 구조는 확실히 익혀두면 좋습니다.
  • 별 찍기 패턴은 응용하면 각종 그래픽 패턴도 구현 가능합니다.
  • 구구단은 중첩 루프의 대표 예제로, 이후 2D 배열 처리에도 도움이 됩니다.

📥 필요하신 자료

✅ PDF 변환본
✅ 손으로 적기 좋은 요점 노트
✅ 연습 문제 추가 (응용 버전)

필요하신 자료 있으면 바로 만들어드립니다.
다음은 어떤 주제 공부할까요? 😊

profile
李家네_공부방

0개의 댓글