본문 바로가기
제출용/TIL

내일배움캠프 41일차 TIL + For문 / 별 찍기

by 유린테 2024. 6. 13.

오늘은 혁매니저님의 나머지(?) 특강

For 문을 배워보는 시간을 가졌습니다.

 

사실 오늘 전까지는 For문이나, For문 안에 들어가는 조건문을 잘 이해하지 못하고, 한 줄도 혼자 쓰지 못했는데

매니저님의 열혈 설명 덕분에 많이 이해가 되었다!!!! 최고의 매니저님....☆★

수강생이 이렇게 많은데 본인 시간 쪼개서 캠프 시간 이후나 주말에도 나오셔서 챙겨주시고... 참 대단하신 것 같다.

 


 

 

 

문제 풀이에 앞서 내가 제일 헷갈렸던... For문에 대한 기초적인 정리부터 해보겠다.

 

처음에 내가 이 문제를 풀어봐라. 라고 했을 때 코드를 한 줄 도 적지 못한 것은

애초에 For문에 대해 이해를 못하고 있기 때문이었다.

>> For 문이 반복문인건 알겠는데, 뒤에 붙은 ( ) 안의 코드들을 이해를 못하겠어!!! 였음

 

 

 

For 문 뒤의 ( 조건문 ) 이해하기

for (int i =0; i<3; i++)   
   {
     Console.Write("*");
   }

 

for ( int i = 0;  i < 3;  i++)

{

    Console.Write ("*");

}

 

>>> 

 

                               for   이 조건을 만족할 때 까지 반복

                       int i = 0;   자료형이 int 인 i 는 0 부터 시작한다

                            i < 3;   i는 3 미만일 때 까지 반복한다 

                               i++   i 의 값은 1씩 증가하며 반복한다

 { Console.Write ("*"); }   반복할 대상! {  } 안에 있는 것을 반복해서 실행한다. 

 

그러니까 저 For문은

{ 콘솔창에 * 찍기를 }  반복해라 ( 자료형이 int 인 i 를 0 부터;  3 미만을 넣을 때 까지;   i 를 1씩 증가시키며 넣어라)

가 되는 것이다. 

 

///

일단 내가 이해한대로 적어보았는데, 혹시 틀렸다면 .. 누군가 댓글 달아 주겠지 (??)

 

 

 

 

(1) 직사각형 별 찍기

 

기본으로 쓰여있는 코드

>>>

using System;

public class Example
{
    public static void Main()
    {
        String[] s;

        Console.Clear();
        s = Console.ReadLine().Split(' ');

        int a = Int32.Parse(s[0]);  
        int b = Int32.Parse(s[1]);  

        Console.WriteLine("{0}", a + b);
    }
}

 

 

문제 풀이 코드

using System;

public class Example
{
    public static void Main()
    {
       String[] s;

       Console.Clear();
       s = Console.ReadLine().Split(' ');

        int a = Int32.Parse(s[0]); //암튼 a 를 정수로 만든다는 뜻 (가로)
        int b = Int32.Parse(s[1]); //암튼 b 를 정수로 만든다는 뜻 (세로)

         for (int j = 0; j < b; j++)  // 세로줄
         {
            for (int i = 0; i < a; i++) //가로줄
            {
                Console.Write("*"); 
            }
            Console.WriteLine(); //줄바꿈
         }
    }
}

 

먼저 
가로줄을 만들어준다. 여기서 가로줄에 들어갈 *의 갯수는 a 개 이다.

for (int i = 0; i < a; i++) //가로줄
   {
     Console.Write("*"); 
   }

 

i 는 0 ~ a 직전 까지 1씩 증가하며 반복된다

반복 될 때 마다 * 를 하나씩 찍음.

 

 

여기서  가로줄에 들어갈 * 의 갯수가 a 개인데  i 에는 a 직전까지 넣어주는 이유

>> i 를 세는건 0부터 세어주기 때문이다.

i 의 값 = i 번째 숫자를 넣어준다 라고 생각할 수 있는데,

여기서 i 는 1번째, 2번째가 아니라 0번째, 1번째, 2번째.... 이렇게 센다.

시작이 0이기 때문에 3개를 넣어주고 싶으면 0 , 1,  2  해서 2를 넣어줘야 하고

따라서 a < 3 이 되는 것이다.

 

이렇게 가로줄을 만들어 주었다.

그리고 세로줄은 (가로줄)이 세로줄만큼 복사되어야 하는거기 때문에, 세로줄 X (가로줄) 이 된다.

 

   for (int j = 0; j < b; j++)  // 세로줄
         {
            for (int i = 0; i < a; i++) //가로줄
            {
                Console.Write("*"); 
            }
            Console.WriteLine(); //줄바꿈
         }
    }

그래서 세로줄 갯수인 b 만큼, 가로줄을 곱해야 하기 때문에 

세로줄 안에 가로줄 for 문을 넣어주면 

세로줄 X (가로줄) 을 만들 수 있다.

그리고 줄 바꿈을 하기 위해 가로줄 하나를 만들 때 마다 Console.WritLine() 을 넣어준다.

 

그럼 이렇게. 

a와 b 값에 따라 원하는 크기의 별로 찍은 직사각형을 만들 수 있다.

 

 

 

 


 

 

뭔가 분명 이해는 했는데, 정리해서 적으려니 알아보기 쉽게 하는게 정말 힘든 것 같다.

그래도 for 문이 돌아가는 형태나, 조건을 지정해주는 것을 꽤 알게 된 것 같아 좋은 시간이었다.