사전캠프/달리기반

달리기반 Lv.2 이중 반복문을 사용한 구구단 출력

서보훈 2024. 8. 14. 16:02

  • 이중 반복문을 사용하여 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 = 8

 

  • 구구단 가로로 출력해 주세요
    • 출력 예시
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

반복문을 사용해 구구단 출력 프로그램을 작성해야 합니다.

세로로 출력시에는 오른쪽값이  고정된 상태로 왼쪽 값이 1씩 증가하며

가로로 출력시에는 왼쪽값이 고정된 상태로 오른쪽 값이 1씩 증가하는 형태인것을 볼 수 있습니다.

 

줄을 한번 변경되면 이전줄의 내용을 수정할 수 없기때문에, 각 줄에 모든 값을 출력하고 줄을 변경해야합니다.

반복문의 증감식은 반복문이 끝날때 사용되기 때문에, 고정된 값의 정보를 가진 반복문 내부에 증가하는 값의 정보를 가지는 반복문을 사용하는 이중 반복문 형태를 사용하여 만들어 줄 수 있습니다.

 

이를 토대로 프로그램 흐름을 분석해보면

  1. 한쪽 값을 저장하는 반복문
  2. 다른쪽 값을 저장하는 반복문
  3. 왼쪽값, 오른쪽 값, 두 수의 곱을 출력
  4. 한 줄이 끝나고, 줄바꾸기

순으로 진행됩니다.

 

두개의 출력을 만들어야하기 때문에, 함수의 형태로 만들어주도록 하겠습니다.

먼저 세로로 출력하는 형태 입니다.

 

오른쪽 값이 고정된 상태로 왼쪽값이 오르는 형태이기 때문에, 첫번째 반복문이 오른쪽 줄을 당담하게 됩니다.

static void PrintDown()
{
    //구구단의 오른쪽 줄
    for (int i = 1; i <= 9; i++)
    {
        
    }
}

 

오른쪽 줄은 1부터 시작합니다. 시작값을 1로 설정해주고, 9와 같거나 작을경우 반복되게 해주었습니다.

 

왼쪽 값을 당담할 반복문을 만들어줍니다.

static void PrintDown()
{
    //구구단의 오른쪽 줄
    for (int i = 1; i <= 9; i++)
    {
        //구구단의 왼쪽줄 (2단부터 시작)
        for (int j = 2; j <= 9; j++)
        {
        
        }
    }
}

왼쪽 값은 2부터 시작해서 9에서 끝나게 됩니다. 시작값을 2로 설정해줍니다.

이 두번째 반복문에서 구구단 값을 출력해주면 됩니다.

 

구구단을 출력합니다.

static void PrintDown()
{
    //구구단의 오른쪽 줄
    for (int i = 1; i <= 9; i++)
    {
        //구구단의 왼쪽줄 (2단부터 시작)
        for (int j = 2; j <= 9; j++)
        {
            //각 식마다 2칸씩 띄어쓰기, 결과값 2칸 고정
            Console.Write($"{j} X {i} = {i * j, 2}  ");
        }
    }
}

줄을 바꾸면 안되기 때문에, Console.Write를 사용해 줄을 변경하지 않고, 끝부분에 2칸의 공백을 사용해 다음 구구단이 출력될때 완전히 붙지 않도록 만들어줍니다.

또한, 두 값을 곱할때, 2자리수를 넘지 않기 때문에, 2칸을 기준으로 오른쪽 정렬을 하도록 만들어주었습니다.

 

두번째 반복문이 끝나면, 줄을 변경해주어야합니다.

첫번째 반복문의 마지막 부분에 줄을 바꾸기위한 출력을 넣어줍니다.

static void PrintDown()
{
    //구구단의 오른쪽 줄
    for (int i = 1; i <= 9; i++)
    {
        //구구단의 왼쪽줄 (2단부터 시작)
        for (int j = 2; j <= 9; j++)
        {
            //각 식마다 2칸씩 띄어쓰기, 결과값 2칸 고정
            Console.Write($"{j} X {i} = {i * j, 2}  ");
        }
        //한줄이 끝나면, 줄바꾸기
        Console.WriteLine();
    }
}

 

결과를 보도록 하겠습니다.

첫번째 줄에서 2단부터 9단까지, 1을 곱한 값을 출력하고 다음 줄로 넘어가면서 2를 곱한 값을 출력하는것 을 볼 수 있습니다.

 

위와 같은 방식으로, 가로로 출력되는 구구단을 만들어주도록 하겠습니다.

static void PrintRight()
{
    //구구단의 왼쪽줄 (2단부터 시작)
    for (int i = 2; i <= 9; i++)
    {
        //구구단의 오른쪽줄
        for (int j = 1; j <= 9; j++)
        {
            //각 식마다 2칸씩 띄어쓰기, 결과값 2칸 고정
            Console.Write($"{i} X {j} = {i * j, 2}  ");
        }
        //한줄이 끝나면, 줄바꾸기
        Console.WriteLine();
    }
}

전과 다르게 2단을 모두 출력하고 다음줄에서 3단이 출력되는것을 확인 할 수 있습니다.

 


전체 코드 입니다.

class PrintTimesTable
{
    static void Main()
    {
    	PrintDown();
        //PrintRight();
    }

    static void PrintDown()
    {
        //구구단의 오른쪽 줄
        for (int i = 1; i <= 9; i++)
        {
            //구구단의 왼쪽줄 (2단부터 시작)
            for (int j = 2; j <= 9; j++)
            {
                //각 식마다 2칸씩 띄어쓰기, 결과값 2칸 고정
                Console.Write($"{j} X {i} = {i * j, 2}  ");
            }
            //한줄이 끝나면, 줄바꾸기
            Console.WriteLine();
        }
    }

    static void PrintRight()
    {
        //구구단의 왼쪽줄 (2단부터 시작)
        for (int i = 2; i <= 9; i++)
        {
            //구구단의 오른쪽줄
            for (int j = 1; j <= 9; j++)
            {
                //각 식마다 2칸씩 띄어쓰기, 결과값 2칸 고정
                Console.Write($"{i} X {j} = {i * j, 2}  ");
            }
            //한줄이 끝나면, 줄바꾸기
            Console.WriteLine();
        }
    }
}