Coding History

국비 지원 IT(웹앱개발) 취업반 강의 3일차

BlackBirdIT 2024. 5. 30. 18:08

오늘은 반복문에 대해서 공부했다. 그 빌드업을 쌓기 위해 강사님은 구구단을 출력해보라고 시키셨고 처음엔 문제를 이런 식으로 해결했다.

구구단 변수 활용해서 구현하기(반복문 활용x)

// 문제 : 아래와 같이 출력해주세요.
// 문제 : 2부터 9까지의 숫자를 사용하지 않고 구구단 출력을 완성 해주세요.

class Main {
    public static void main(String[] args) {
        int dan = 8;

        // 수정가능지역 시작
        int i = 1;

        System.out.println(dan + " * " + i + " = " + dan * i);
        i ++;
        System.out.println(dan + " * " + i + " = " + dan * i);
        i ++;
        System.out.println(dan + " * " + i + " = " + dan * i);
        i ++;
        System.out.println(dan + " * " + i + " = " + dan * i);
        i ++;
        System.out.println(dan + " * " + i + " = " + dan * i);
        i ++;
        System.out.println(dan + " * " + i + " = " + dan * i);
        i += 1;
        System.out.println(dan + " * " + i + " = " + dan * i);
        i += 1;
        System.out.println(dan + " * " + i + " = " + dan * i);
        i += 1;
        System.out.println(dan + " * " + i + " = " + dan * i);
        // 수정가능지역 끝

        // 출력
    /*
    8 * 1 = 8
    8 * 2 = 16
    8 * 3 = 24
    8 * 4 = 32
    8 * 5 = 40
    8 * 6 = 48
    8 * 7 = 56
    8 * 8 = 64
    8 * 9 = 72
    */
    }
}

코드가 길어지고 반복되는 코드가 눈에 보인다. 이렇게 반복되는 무언가가 있을 때 반복문을 활용해 코드를 효율적으로 사용하는 것이다.

구구단 반복문 활용

// 문제 : 아래와 같이 출력해주세요.
// 문제 : 단을 * 9까지 출력해주세요.

class Main {
  public static void main(String[] args) {
    int dan = 8;

    int i = 1;

    while ( i <= 9 ) {
      System.out.println(dan + " * " + i + " = " + dan * i);
      i++;
    }

    // 출력
    /*
    8 * 1 = 8
    8 * 2 = 16
    8 * 3 = 24
    8 * 4 = 32
    8 * 5 = 40
    8 * 6 = 48
    8 * 7 = 56
    8 * 8 = 64
    8 * 9 = 72
    */
  }
}

반복문을 활용하면 코드가 훨씬 간결해진다.

  • 반복문의 3요소
    반복문에는 3요소가 반드시 필요하다. 바로 초기 값과 종료 조건, 그리고 Step(보폭, 진행방향)이다. 방금 위의 구구단을 구현한 반복문을 확인해보자
int dan = 8; 

    int i = 1; // 초기 값

    while ( i <= 9 ) { //종료 조건
      System.out.println(dan + " * " + i + " = " + dan * i); //출력하고 싶은 것
      i++; //진행 방향

i에 초기 값인 1을 저장하고 i <= 9 라는 종료 조건을 걸어준다. 그리고 진행 방향은 +를 통해서 값을 계속 더해나갈지, -를 사용해 값을 줄여나갈지인데, 함수로 따지면 오른쪽과 왼쪽으로 방향을 정해주는 것이다.
그럼 이게 위의 3요소가 위 코드에 어떻게 작동하는지 글로 정리하면 i가 1씩 더해지는 것을 9번 반복한다. 그럼 while문 안의 코드가 i <=9 라는 조건이 false가 될 때 까지 반복하게 되면서 구구단 8단을 9번 계산식까지 함께 출력하게 되는 것이다.

자바의 반복문은 위에 있는 while과 for가 존재한다. while의 예시는 위에 있으니 for를 한번 살펴보자

- for 문

// 1부터 5까지의 합을 더한 결과를 출력해주세요.

class Main {
  public static void main(String[] args) {

    int sum = 0;

    for (int i = 1; i <= 5; i++){
      sum += i;
    }
    System.out.println(sum);
  }
}
// 출력 : 15

이 문제를 풀었다. for문은 while문과 형태가 다른 것이 눈에 보이는가? 바로 3요소가 한줄에 다 쓰여져 있다는 차이가 있다.

    for (int i = 1; i <= 5; i++){
//  for (초기 값    ;종료 조건; step)

같은 반복문이지만 이런 차이가 있다. 나는 지금 지식이 부족해서 훨씬 간결해 보이는 이 for문이 더 컴팩트하고 멋져보이지만 강사님은 두개 다 중요하니 둘 다 잘 봐야한다고 말씀하셨다.

이렇게 반복문에 대해서 알아보았고 이중반복문에 대한 문제도 풀어보았다. while문의 이중반복문, for문의 이중반복문, 이 두가지를 섞은 이중반복문도 있었다. 문제를 함께 보도록 하자.

  • while 이중반복문
// 문제 : 1부터 3까지 출력하는 작업을 10번 해주세요.
// 조건 : 2중 while문 사용

class Main {
    public static void main(String[] args) {
        int x = 1; //반복할 횟수를 카운트 하기위해 변수 선언

        while (x <= 10) { //반복할 횟수 10회 설정

            System.out.println("x : " + x); //횟수 체크

            int i = 1; //1,2,3 을 반복하기 위해 변수 선언

            while (i <= 3) { //1,2,3을 반복하기 위해 반복문 사용

                System.out.println(i);

                i++; // i 값 증가를 위해 사용.
            }
            x++; // x 값 증가를 위해 사용.
        }
    }
}
// 출력:
/*  x : 1
    1
    2
    3
    x : 2
    1
    2
    3
    x : 3
    1
    2
    3
    ...
    ...
    ...
    x : 10
    1
    2
    3
  • for 이중반복문

구구단 2단부터 9단까지.


class Main {
  public static void main(String[] args) {

    for (int dan = 2; dan <= 9; dan++){ // 첫번째 반복문 초기 종료조건 step 설정.
      System.out.println(dan + "단입니다."); //몇단인지 출력

      for (int i = 1; i <= 9; i++){ // 두번째 반복문 초기 종료조건 step 설정.
        System.out.println(dan + " * " + i + " = " + dan * i); //구구단 출력
      }

    }

  }
}
/* 출력 :
   2단입니다.
   2 * 1 = 2
   2 * 2 = 4
   2 * 3 = 6
   2 * 4 = 8
   ...
   ...
   ....
   ...
   9 * 8 = 72
   9 * 9 = 81
  • for과 while 혼합 이중반복문

class Main {
  public static void main(String[] args) {
    int dan = 2; // while문의 초기 값

    while (dan <= 9) { // while문의 종료 조건
      System.out.printf("%d단\n", dan); // 몇단인지 출력
      for (int i = 1; i <= 9; i++) { // for문의 초기 값; 종료 조건; step.
        System.out.println(dan + " * " + " = " + dan * i); // 구구단 출력
      }
      dan++; // while문의 step.
    }


  }
}

이렇게 활용 가능하다.
반복문의 공부는 이런 문제를 계속 풀어보며 더 공부할 생각이다.

중간에 "%d단\n"이런 문구가 있는데 %d <- 이건 서식지정자라는 녀석이란다. %d 말고도 여러가지가 있다.

오늘은 여기까지.