[강좌] 프로그래밍 초급 훈련 08 - 숫자 문제

공통 조건입니다. 먼저 숫자를 하나 입력받고, 그 숫자만큼 반복하는 프로그램을 짜야합니다.
먼저 첫번째 실행예를 보여드리겠습니다.

static void Main(string[] args)
{
    int n;
    Console.Write("number = ");
    n = int.Parse(Console.ReadLine());

    for(int i = 0; i < n; i++)
    {
        Console.Write("{0,4}", i + 1);
    }

    Console.WriteLine();
}



다음은 이중 for문입니다.

static void Main(string[] args)
{
    int n;
    Console.Write("number = ");
    n = int.Parse(Console.ReadLine());

    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            Console.Write("{0,4}", i + 1);
        }
        Console.WriteLine();
    }
}

for문 안에 for문이 들어가 있습니다. 첫번째 for문이 한번 실행될때 두번째 for문이 모두 실행됩니다. 만약 n값이 5라고 한다면 이중 for문이 총 실행되는 횟수는 5 * 5 즉, 25번을 실행합니다. 위 Console.Write("{0,4}", i + 1); 에서 4의 의미는 공백을 4칸을 만들고, 출력한다는 의미입니다. 칸의 넓이쯤으로 생각하시면 되겠습니다.

static void Main(string[] args)
{
    int n;
    Console.Write("number = ");
    n = int.Parse(Console.ReadLine());

    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            Console.Write("{0,4}", j + 1);
        }
        Console.WriteLine();
    }
}

출력되는 변수의 값을 i + 1에서 j + 1로 바꿔봅니다. 어떤 원리인지 이해가 가시나요?

그럼 문제 드리겠습니다. 문제를 푸실때에는 여태까지 배운 것들만 이용해서 푸시면 됩니다. 클래스, 메서드, C# 라이브러리, 배열, if문등 알려드리지 않은 것들은 사용 금지입니다.

1)
number = 5

   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

2)
number = 5

   1   3   5   7   9
  11  13  15  17  19
  21  23  25  27  29
  31  33  35  37  39
  41  43  45  47  49

3)
number = 5
   1   6  11  16  21
   2   7  12  17  22
   3   8  13  18  23
   4   9  14  19  24
   5  10  15  20  25

4)
number = 5
   5   4   3   2   1
   4   3   2   1   0
   3   2   1   0  -1
   2   1   0  -1  -2
   1   0  -1  -2  -3

5)
number = 5
   1   2   3   4   5
   2   3   4   5   6
   3   4   5   6   7 
   4   5   6   7   8
   5   6   7   8   9

6)
number = 5
   1
   1   2
   1   2   3
   1   2   3   4
   1   2   3   4   5

7)
number = 5
   1   2   3   4   5
   1   2   3   4
   1   2   3
   1   2
   1

8)
number = 5
   5   6   7   8   9
   4   5   6   7   8
   3   4   5   6   7
   2   3   4   5   6
   1   2   3   4   5

9)
number = 5
  21  22  23  24  25
  16  17  18  19  20
  11  12  13  14  15
   6   7   8   9  10
   1   2   3   4   5

다음문제는 이중 for문이긴 하지만 for문이 2개는 아닙니다.

10)
number = 5
   1   2   3   4   5
       1   2   3   4
           1   2   3
               1   2
                   1

11)
number = 5
   1   2   3   4   5
   2   3   4   5   1
   3   4   5   1   2
   4   5   1   2   3
   5   1   2   3   4

문제가 쉽나요? 아니면 미치게 어려운가요?
시간이 얼마가 걸리든 상관 없습니다. 중요한건 나 혼자 풀어냈다는 사실이 중요합니다.
아마 인터넷을 뒤지면 답안 소스코드가 돌아다닐 수도 있습니다. 워낙 유명한 문제들이니까요. 절대 보지 마시기 바랍니다. 보는 순간 그 정답에 사고가 갇혀서 그것밖에 생각나지 않습니다. 무조건 혼자 푸셔야 합니다. 만약 풀지 않고, 그냥 넘어가거나 정답을 참조해서 풀었다면 앞으로의 훈련이 점점더 어렵고 힘들게 됩니다.
[강좌] 프로그래밍 초급 훈련 08 - 숫자 문제 [강좌] 프로그래밍 초급 훈련 08 - 숫자 문제 Reviewed by Tae-seob Shin on 10월 09, 2018 Rating: 5

댓글 없음:

Powered by Blogger.