반복문 실습 문제

Hyunsu·2023년 2월 19일
0

국비 교육

목록 보기
8/36
post-thumbnail

실습 문제 1

🚩 메서드명 : public void practice1 ( )

사용자로부터 한 개의 값을 입력 받아 1부터 그 숫자까지의 숫자들을 모두 출력하세요.
단, 입력한 수는 1보다 크거나 같아야 합니다.
만일 1 미만의 숫자가 입력됐다면 "1 이상의 숫자를 입력해주세요" 를 출력하세요.

실행 화면

1 이상의 숫자를 입력하세요 : 4
1 2 3 4

1 이상의 숫자를 입력하세요 : 0
1 이상의 숫자를 입력해주세요.

소스 코드

public void practice1() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("1 이상의 숫자를 입력하세요 : ");
	int input = sc.nextInt();
	
	if (input >= 1) {
		for (int i=1 ; i<=input ; i++) {
			System.out.print(i + " ");
		}
	} else {
		System.out.println("1 이상의 숫자를 입력해주세요.");
	}
}

실습 문제 2

🚩 메서드명 : public void practice2 ( )

사용자로부터 한 개의 값을 입력 받아 1부터 그 숫자까지의 모든 숫자를 거꾸로 출력하세요.
단, 입력한 수는 1보다 크거나 같아야 합니다.

실행 화면

1 이상의 숫자를 입력하세요 : 4
4 3 2 1

1 이상의 숫자를 입력하세요 : 0
1 이상의 숫자를 입력해주세요.

소스 코드

public void practice2() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("1 이상의 숫자를 입력하세요 : ");
	int input = sc .nextInt();
	
	if (input >= 1) {
		for (int i=input ; i>=1 ; i--) {
			System.out.print(i + " ");
		}
	} else {
		System.out.println("1 이상의 숫자를 입력해주세요.");
	}
}

실습 문제 3

🚩 메서드명 : public void practice3 ( )

1부터 사용자에게 입력 받은 수까지의 정수들의 합을 for문을 이용하여 출력하세요.

실행 화면

정수를 하나 입력하세요 : 8
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36

소스 코드

public void practice3() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("정수를 하나 입력하세요 : ");
	int input = sc.nextInt();
	int sum = 0;
	
	for (int i=1; i<=input-1; i++) {
		sum += i;
		System.out.print(i + " + ");
	}
	
	sum += input;
	System.out.print(input + " = " + sum);
	
	// 풀이 2
	for (int i=1; i<=input; i++) {
		sum += i;
		if (i == input) { // 마지막이면
			System.out.print(i + " = " + sum);
		} else { // 마지막이 아니면
			System.out.print(i + " + ");
		}
	}

	// 풀이 3
	for (int i=1; i<=input; i++) {
		sum += i;
		System.out.print(i);
		
		if (i != input) { // 마지막이 아니면
			System.out.print(" + ");
		}
	}
	System.out.println(" = " + sum);
	
}

실습 문제 4

🚩 메서드명 : public void practice4 ( )

사용자로부터 두 개의 값을 입력 받아 그 사이의 숫자를 모두 출력하세요.
만일 1 미만의 숫자가 입력됐다면 "1 이상의 숫자를 입력해주세요" 를 출력하세요.

실행 화면

첫 번째 숫자 : 8
두 번째 숫자 : 4
4 5 6 7 8

첫 번째 숫자 : 4
두 번째 숫자 : 8
4 5 6 7 8

첫 번째 숫자 : 9
두 번째 숫자 : 0
1 이상의 숫자를 입력해주세요.

소스 코드

public void practice4() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("첫 번째 숫자 : ");
	int num1 = sc.nextInt();
	
	System.out.print("두 번째 숫자 : ");
	int num2 = sc.nextInt();
	
	if (num1 < 1 || num2 < 1) { // 1 미만의 숫자가 입력된 경우
		System.out.print("1 이상의 숫자를 입력해주세요.");
	}
	else {
		int start = num1;
		int end = num2;
		
		if (num1 > num2) {
			start = num2;
			end = num1;
		}
		
		for (int i=start; i<=end; i++) {
			System.out.print(i + " ");
		}
	}
}

실습 문제 5

🚩 메서드명 : public void practice5 ( )

사용자로부터 입력 받은 숫자의 단을 출력하세요.

실행 화면

숫자 : 4
===== 4단 =====
4*1 = 4
4*2 = 8
4*3 = 12
4*4 = 16
4*5 = 20
4*6 = 24
4*7 = 28
4*8 = 32
4*9 = 36

소스 코드

public void practice5() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("숫자 : ");
	int dan = sc.nextInt();
	
	System.out.printf("===== %d단 =====", dan);
	
	for (int i=1; i<=9; i++) {
		System.out.printf("%d * %d = %d\n", dan, i, dan * i);
	}
}

실습 문제 6

🚩 메서드명 : public void practice6 ( )

사용자로부터 입력 받은 숫자의 단부터 9단까지 출력하세요.
단, 2~9를 사이가 아닌 수를 입력하면 "2~9 사이 숫자만 입력해주세요" 를 출력하세요.

실행 화면

숫자 : 4
===== 4단 =====
===== 5단 =====
===== 6단 =====
===== 7단 =====
===== 8단 =====
===== 9단 =====

숫자 : 10
2~9 사이 숫자만 입력해주세요.

소스 코드

public void practice6() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("숫자 : ");
	int input = sc.nextInt();
	
	if (input < 2 || input > 9) {
		System.out.println("2~9 사이 숫자만 입력해주세요.");
	} else {
		for (int dan=input; dan<=9; dan++) {
			System.out.println("===== " + dan + "단 =====");	
			for (int i=1; i<=9; i++) {
				System.out.printf("%d * %d = %d\n", dan, i, dan * i);
			}
			System.out.println();
		}
	}
}

실습 문제 7

🚩 메서드명 : public void practice7 ( )

다음과 같은 실행 예제를 구현하세요.

실행 화면

정수 입력 : 4


**
***
****

소스 코드

public void practice7() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("정수 입력 : ");
	int input = sc.nextInt();
	
	for (int row=1; row<=input; row++) {
		for (int col=1; col<=row; col++) {
			System.out.print("*");
		}
		System.out.println();
	}
}

실습 문제 8

🚩 메서드명 : public void practice8 ( )

다음과 같은 실행 예제를 구현하세요.

실행 화면

정수 입력 : 4

****
***
**

소스 코드

public void practice8() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("정수 입력 : ");
	int input = sc.nextInt();
	
	for (int row=input; row>=1; row--) {
		for (int col=row; col>=1; col--) {
			System.out.print("*");
		}
		System.out.println();
	}
}

실습 문제 9

🚩 메서드명 : public void practice9 ( )

다음과 같은 실행 예제를 구현하세요.

실행 화면

정수 입력 : 4

         *
      **
   ***
****

소스 코드

public void practice9() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("정수 입력 : ");
	int input = sc.nextInt();
	
	// 풀이 1 (for)
	for (int row=1; row<=input; row++ ) {
		for (int i=input-1; i>=row; i--) {
			System.out.print(" ");
		}
		
		for (int col=1; col<=row; col++) {
			System.out.print("*");
		}
		
		System.out.println();
	}
	
	// 풀이 2 (if)
	for (int row=1; row<=input; row++) {
		for (int col=1; col<=input; col++) {
			if (col <= input-row) {
				System.out.print(" ");
			} else {
				System.out.print("*");
			}
		}
		System.out.println();
	}
}

실습 문제 10

🚩 메서드명 : public void practice10 ( )

다음과 같은 실행 예제를 구현하세요.

실행 화면

정수 입력 : 3


**
***
**

소스 코드

public void practice10() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("정수 입력 : ");
	int input = sc.nextInt();
	
	// 풀이 1
	for (int row=1; row<=input; row++) { // 위쪽 삼각형
		for (int col=1; col<=row; col++) {
			System.out.print("*");
		}
		System.out.println(); // 개행
	}
	
	
	for (int row=input-1; row>=1; row--) { // 아랫쪽 삼각형
		for (int col=1; col<=row; col++) {
			System.out.print("*");
		}
		System.out.println(); // 개행
	}
	
	// 풀이 2
	for (int row=1; row<=input*2-1; row++) {
	  if (row < input) {
         for (int col=1; col<=row; col++) {
            System.out.print("*");
         }
      } else {
         for (int col=input; col>row-input; col--) {
            System.out.print("*");
         }
      }
      
      System.out.println();
   }
}

실습 문제 11

🚩 메서드명 : public void practice11 ( )

다음과 같은 실행 예제를 구현하세요.

실행 화면

정수 입력 : 4

         *
      ***
   *****
*******

소스 코드

public void practice11() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("정수 입력 : ");
	int input = sc.nextInt();
    
	for (int row=1; row<=input; row++) {
		// 풀이 1 (for 2개)
		for (int col=input-row; col>=1; col--) {
			System.out.println(" ");
		}
		for (int col=1; col<=row*2-1; col++) {
			System.out.println("*");
		}
		System.out.println();
		
		// 풀이 2 (for 1개, if-else 1개)
		for (int col=1; col<=input+row-1; col++) { // 마지막 문자가 있는 곳 만큼
			if (input-row >= col) {
				System.out.println(" ");
			} else {
				System.out.println("*");
			}
		}
	}
}

실습 문제 12

🚩 메서드명 : public void practice12 ( )

다음과 같은 실행 예제를 구현하세요.

실행 화면

정수 입력 : 5

*****
*   *
*   *
*****

소스 코드

public void practice12() {
	 Scanner sc = new Scanner(System.in);
	 int input = sc.nextInt();
	 
	 for (int row=1; row<=input; row++) {
		 for (int col=1; col<=input; col++) {
			 // 첫 번째와 마지막 줄 또는 칸일 때만 별 출력
             if (row == 1 || row == input || col == 1 || col == input) {
				 System.out.println("*");
			 } else {
				 System.out.println(" ");
			 }
		 }
		 System.out.println(); // 개행
	 }
}

실습 문제 13

🚩 메서드명 : public void practice13 ( )

1부터 사용자에게 입력 받은 수까지 중에서
1) 2와 3의 배수를 모두 출력하고
2) 2와 3의 공배수의 개수를 출력하세요.

실행 화면

자연수 하나를 입력하세요 : 15
2 3 4 6 8 9 10 12 14 15
count : 2

소스 코드

public void practice13() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("자연수 하나를 입력하세요 : ");
	int input = sc.nextInt();
	
	int count = 0;
	
	for (int i=1; i<=input; i++) {
		if ((i % 2 == 0) || (i % 3 == 0)) {
			System.out.printf("%d ", i);
			if ((i % 2 == 0) && (i % 3 ==0)) count++;
		}
	}
	
	System.out.printf("\ncount : %d", count);
}
profile
현수의 개발 저장소

0개의 댓글