Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Archives
Today
Total
관리 메뉴

개발 달리기

C# 예제 - 이중 반복문을 사용한 구구단 출력 본문

C#

C# 예제 - 이중 반복문을 사용한 구구단 출력

옹즤 2025. 4. 8. 15:55
  • 이중 반복문을 사용하여 2단부터 9단까지의 구구단을 출력하는 프로그램 작성.

2 x 1 = 2    3 x 1 = 3    4 x 1 = 4    ...   9 x 1 = 9
2 x 2 = 4    3 x 2 = 6    4 x 2 = 8    ...   9 x 2 = 18
...
2 x 9 = 18   3 x 9 = 27   4 x 9 = 36   ...   9 x 9 = 81

구구단을 세로와 가로로 출력

 

코드 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int cal; // 결과값 선언
int first; // 첫번째 선언
int second; // 두번째 선언
 
for (int i = 2; i < 10; i++// 2 ~ 9까지
{
    first = i;
    for (int j = 1; j < 10; j++// 1 ~ 9까지
    {
        second = j;
        cal = i * j;
        Console.WriteLine($"{first} x {second} = {cal}");
    }
}
cs

일단 이중 반복문을 통한 구구단을 일반적으로 출력하는 코드까지 짜놓은 후

이 부분부터 어떻게 코드를 변화시킬지 고민을 했다.

중요한건 배열을 이용한 9x9 행렬의 2가지 스타일이 필요하다.

 

라고 생각한것은 너무 어렵게 생각했다.

애초에 배열값을 출력한다라는 전제부터 잘못됐어서 오랜시간 헤맸다.

그냥 간단하게 줄바꿈을 센스있게 사용하면 되는 부분이었다.

행렬 배열을 사용하는 int[,] matrix = new int[,] 의 새로운 코드를 찾아서 쓰려고 했다가

뭔가 잘못됨을 깨닳았다.

 

새로 코드 수정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int cal; // 결과값 선언
int first; // 첫번째 선언
int second; // 두번째 선언
 
for (int i = 2; i < 10; i++// 2 ~ 9까지
{
    first = i;
    for (int j = 1; j < 10; j++// 1 ~ 9까지
    {
        second = j;
        cal = i * j;
        Console.Write($"{first} x {second} = {cal,-2} "); // 줄바꿈 없이 계속 출력 및 -2는 왼쪽 정렬
    }
    Console.WriteLine(); // i가 9까지 갔을 때 줄바꿈
}
 
cs

배열을 사용하지 않고 마치 배열처럼 출력하는 방식은 단순히

줄바꿈 기능이 있는 Console.WriteLine() 기능과 줄바꿈 없이 그대로 출력하는 Console.Write()를 쓰면 되는 문제였다.

계속해서 WriteLine만 사용했어서 아예 기능을 몰랐다.

이렇게 코드를 짜니

다음과 같이 의도대로 출력되었다.

가로 출력을 완료했으니 세로 출력으로 바꾸면 되는데

예제를 풀어본 후 생각해보니 행(i)과 열(j)을 바꾸면 되는 그냥 단순한 구조인데

막상 코드를 수정하면 헷갈리거나 실수를 해서 꼬이는 느낌이 있었다.

엑셀에서 표의 구조를 바꾸듯이 단순히 생각했으면 되는 방식이었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int cal; // 결과값 선언
int first; // 첫번째 선언
int second; // 두번째 선언
 
for (int j = 1; j < 10; j++)
{
    first = j;
    for (int i = 2; i < 10; i++)
    {
        second = i;
        cal = i * j;
        Console.Write($"{second} x {first} = {cal,-2} ");
    }
    Console.WriteLine();
}
cs

코드는 다음과 같이 수정하였고 이렇게 수정 후 출력을 하면

정상적으로 세로 출력이 된다.

 

이 문제 하나를 푸는데 너무 시간이 걸렸지만, 그와 동시에 여러 의문이 생겼다.

과연 배열로 표현하는 방식이 정말 안되는지

그래서 이 부분에 대해 좀 찾아본 결과 표현 방식은 비슷하지만

메모리적 부분이나 후처리 부분에서 조금 다른 방식이 있다는 점을 알게 되었다.

더보기

🔸 1. Console.Write() 기반 실시간 계산 방식

for (int j = 1; j <= 9; j++) {
    for (int i = 2; i <= 9; i++) {
        Console.Write($"{i} x {j} = {i * j,2}    ");
    }
    Console.WriteLine();
}
  • 💡 계산 결과를 출력하면서 바로 계산
  • 👉 메모리 적게 쓰고 빠름
  • ❗ 데이터 재사용이나 후처리엔 불리

🔸 2. 배열을 만들어 저장한 후 출력하는 방식

int[,] gugudan = new int[8, 9];
for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 9; j++) {
        gugudan[i, j] = (i + 2) * (j + 1);
    }
}
for (int j = 0; j < 9; j++) {
    for (int i = 0; i < 8; i++) {
        Console.Write($"{i + 2} x {j + 1} = {gugudan[i, j],2}    ");
    }
    Console.WriteLine();
}
  • 💡 계산 결과를 배열에 저장해두고 나중에 출력
  • 👉 나중에 데이터 가공, 검색, 시각화 등에 유리
  • ❗ 메모리 조금 더 사용

✅ 결론

  • 둘 다 출력 형태는 같고, 어느 쪽을 쓰든 정답
  • 네가 만들었던 Console.Write() 방식은 간단하고 빠른 출력용에 아주 적합하고
  • 배열 방식은 계산 결과를 저장하거나 조작하려는 경우 더 적합해!