이중 반복문을 사용하여 2단부터 9단까지의 구구단을 출력하는 프로그램을 작성하세요.
- 각 단은 1부터 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
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 ... 2 x 9 = 18
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 ... 3 x 9 = 27
...
9 x 1 = 9 9 x 2 = 18 9 x 3 = 27 ... 9 x 9 = 81
문제를 푸는 순서는 다음과 같다고 생각한다.
a와 곱하는 숫자 b를 변수로 선언한다.a의 초기값을 2, b의 초기값을 1로 저장한다.세로로 출력하는 경우
a가 9가 될 때까지 a에 b를 곱한다. b가 9가 될 때까지 반복한다.가로로 출력하는 경우
b가 9가 될 때까지 a에 b를 곱한다.a가 9가 될 때까지 반복한다.먼저, a 와 b를 변수로 선언하고 초기값을 저장한다.
int a = 2;
int b = 1;
이후 a가 9가 될 때까지 a에 b를 곱하는 걸 b가 9가 될 때까지 반복한다.
완성한 코드는 다음과 같다.
int a = 2;
int b = 1;
while(a <= 9)
{
while (b <= 9)
{
Console.WriteLine($"{a} x {b} = {a * b}");
b++;
}
a++;
}
하지만 결과는

다음과 같았다.
이유는 다음과 같다고 생각한다.
b에 저장된 값이 9로 저장된 채 고정되었기 때문에 더 이상 반복을 하지 못한다. b를 새로 시작해주어야 한다. 따라서 int b = 1;을 반복문 안에 삽입한다.
완성된 코드는 다음과 같다.
int a = 2;
while(a <= 9)
{
int b = 1;
while (b <= 9)
{
Console.WriteLine($"{a} x {b} = {a * b}");
b++;
}
a++;
}
결과는 다음과 같이 출력된다.

하지만 문제는 가로로 정렬하여 구구단을 출력하는 방식이다. 나는 출력 방식을 바꾸는 것으로 이를 해결해보겠다. 각 수마다 tab으로 간격이 띄워져있고, 각 단 마다 줄이 바뀌는데, 이는 Console.WriteLine()을 Console.Write()로 바꾸고, \t 키워드를 통해 tab으로 간격을 띄우는 것과 Console.WriteLine();으로 줄을 바꾸는 것으로 해결할 수 있을 것이다.
최종 완성된 코드는 다음과 같다.
int a = 2;
while (a <= 9)
{
int b = 1;
while (b <= 9)
{
Console.Write($"{a} x {b} = {a * b}\t");
b++;
}
Console.WriteLine();
a++;
}
결과로 출력된 값은 다음과 같다.

반대로 세로로 나열하여 출력되는 형식은 b값이 바깥 반복문에 있고 a가 안에 있는 경우이다. 코드를
int b = 1;
while (b <= 9)
{
int a = 2;
while (a <= 9)
{
Console.Write($"{a} x {b} = {a * b}\t");
a++;
}
Console.WriteLine();
b++;
}
이렇게 변경해 주었다.
결과로 출력된 값은 다음과 같다.

간단한 문제라고 생각했으나, 이중 반복문의 순서에 따라 출력이 바뀌는 것을 보고 어떻게 출력되고 싶은지에 따라 순서를 어떻게 설정해야 할지를 고민하는 것이 중요하다는 생각이 들었다.