스터디/JAVA

섹션6. 반복문

nnhhmm 2024. 11. 3. 16:15

초급

문제1. while 문을 사용하여 1부터 10까지의 숫자를 출력하는 코드를 작성하세요.

public class BasicEx01 {
    public static void main(String[] args) {
        int i = 1;
        while(i<=10){
            System.out.println(i);
            i++;
        }
    }
}

문제2. 코드 작성: for 문을 사용하여 다음과 같은 형태로 숫자를 출력하세요.

1
2 3
4 5 6
7 8 9 10​
public class BasicEx02 {
    public static void main(String[] args) {
        int num = 1;
        for (int i = 1; i <= 4; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(num);
                System.out.print(" ");
                num++;
            }
            System.out.println("");
        }
    }
}

문제3. 코드 작성: for 문을 사용하여 5층의 피라미드 모양을 별(*)로 출력하세요.

    *
   ***
  *****
 *******
*********
public class BasicEx03 {
    public static void main(String[] args) {
        int num = 5;

        for (int i = 1; i <= num; i++) {
            for (int j = num; j >= i + 1; j--) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println(" ");
        }
    }
}

 

중급

문제1. do-while 문과 continue 키워드를 사용하여 1부터 20까지 숫자 중 홀수만 출력하는 코드를 작성하세요.

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

        int i = 0;
        do {
            i++;

            if (i % 2 == 0) continue;
            System.out.println(i);

        } while (i < 20);

    }
}

문제2. 다음과 같은 형태의 별 피라미드를 for 문과 break 문을 사용하여 작성하세요. 5번째 줄에서 중단되도록 합니다.

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

        int num = 5;

        for (int i = 1; i <= num; i++) {
            for (int j = num; j >= i + 1; j--) {
                System.out.print(" ");
            }
            for (int k = 0; k < 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println(" ");
            if(i==4) break;
        }
    }
}

문제3. 중첩 반복문을 사용하여 다음과 같은 곱셈표를 출력하세요 (1부터 5까지).

1  2  3  4  5
2  4  6  8 10
3  6  9 12 15
4  8 12 16 20
5 10 15 20 25
public class MediumEx03 {
    public static void main(String[] args) {
        
       for(int i = 1; i<=5; i++){
           for(int j=1; j<=5; j++){
               if(j*i<10) {
                   System.out.print("  ");
               }else{
                   System.out.print(" ");
               }
               System.out.print(j*i);
           }

           System.out.println("");
       }
    }
}

 

고급

문제1. for 문과 continue 키워드를 사용하여, 1부터 100까지 숫자 중 3과 5의 공배수인 숫자만 출력하는 코드를 작성하세요.

public record AdvancedEx01() {
    public static void main(String[] args) {
        for(int i=1; i<=100; i++){
            if(!(i%3==0 && i%5==0))
                continue;
            System.out.println(i);
        }
    }
}

문제2. while 문과 break 문을 사용하여 다음과 같은 별 피라미드를 역방향으로 출력하세요. (예: 5층의 피라미드)

*********
 *******
  *****
   ***
    *​

 

public record AdvancedEx02() {
    public static void main(String[] args) {

        int num = 5;
        int i = 0;
        while (true) {
            int j = 1;
            int k = 2 * num - 1;
            while (j <= i) {
                System.out.print(" ");
                j++;
            }
            while (k >= 2 * i + 1) {
                System.out.print("*");
                k--;
            }
            System.out.println("");
            i++;
            if (i > num)
                break;
        }
    }
}

문제3. 중첩 반복문을 이용하여 다음과 같은 모양의 피라미드를 출력하세요 (층 수는 유동적으로 설정 가능해야 합니다).

 

    1
   2 2
  3 3 3
 4 4 4 4
public record AdvancedEx03() {
    public static void main(String[] args) {

        int num = 4;

        for (int i = 0; i <= num; i++) {
            for (int j = num; j > i; j--) {
                System.out.print(" ");
            }
            for (int k = 1; k <= i; k++) {
                System.out.print(i);
                System.out.print(" ");
            }
            System.out.println("");
        }
    }
}