본문 바로가기

BackEnd/Java

[java] 2022.12.09 연습 문제 풀이

728x90
반응형
1. 문제 1번

 

문제1) 주어진 배열 항목에서 최대값을 출력하는 코드를 작성해보세요(for문 이용)

조건) int[] array = { 1, 5, 3, 8, 2 };

 

package java1209;

public class arrEx01 {

	public static void main(String[] args) {
		
		int[] array = {1, 5, 3, 8, 2};
		int max = 0;
		
		for(int i=0; i < array.length; i++) {
			if(array[i] >= max) {
				max = array[i];
			}
		}
		System.out.println(max);
	}
}
8

 

배열과 for문을 이용해 max라는 값에 최대 값을 저장해 출력을 할 수 있습니다.

 

 

2. 문제 2번

 

문제2) 주어진 배열 항목의 전체 합과 평균을 구해 출력하는 코드를 작성해 보세요 (중첩 for문 이용).

조건) int[][] array = {
                                {95, 86},
                                {83, 92, 96},
                                {78, 83, 93, 87, 88}
                                 };

 

package java1209;

public class arrEx02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int[][] array = {
				{95, 86},
				{83, 92, 96},
				{78, 83, 93, 87, 88}
				};
		
		int sum = 0;
		int cnt = 0;
		double avg = 0.0;
		
		for(int i=0; i < array.length; i++) {
			for(int j=0; j < array[i].length; j++) {
				sum += array[i][j];
				cnt++;
			}
		}
		
		avg = (double)sum / cnt;
		
		System.out.println(sum);
		System.out.println(avg);
	}
}
881
88.1

 

for문을 이용해 배열의 값들을 모두 합하고 평균을 구했습니다.

 

 

3. 문제 3번

 

문제 3) 학생들의 점수를 분석하는 프로그램을 만들려고 합니다. 키보드로부터 학생 수와 각 학생들의 점수를 입력받고 while 문과 Scanner의 nextLine() 메소드를 이용해서 최고 점수 및 평균 점수를 출력하는 코드를 작성해보세요.

 

출력)
-------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
-------------------------------------------------
선택> 1
학생수> 3
-------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
-------------------------------------------------
선택> 2
scores[0]> 85
scores[1]> 95
scores[2]> 93
-------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
-------------------------------------------------
선택> 3
scores[0] : 85
scores[1] : 95
scores[2] : 93
-------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
-------------------------------------------------
선택> 4
최고 점수 : 95
평균 점수 : 91.0
-------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
-------------------------------------------------
선택> 5
프로그램 종료

 

package java1209;

import java.util.Scanner;

public class arrEx03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		
		int[] scores = new int[100]; //배열의 수를 지정하지 않고 null값으로 지정해도 된다.
		int a;
		int max = 0;
		int sum = 0;
		int cnt = 0;
		double avg = 0.0;
		String input;
		
		while(true) {
			System.out.println("-----------------------------------------------");
			System.out.println("1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료");
			System.out.println("-----------------------------------------------");
			
			System.out.print("선택> ");
			input = scan.next();
			
			if(input.equals("1")) {
				System.out.print("학생수> ");
				a = scan.nextInt();
				scores = new int[a];
				
			} else if(input.equals("2")) {
				for(int i=0; i<scores.length; i++) {
					System.out.print("scores[" + i + "]> ");
					scores[i] = scan.nextInt();
				}
				
			} else if(input.equals("3")) {
				for(int i=0; i<scores.length; i++) {
					System.out.println("scores[" + i + "]> " + scores[i]);
				}
				
			} else if(input.equals("4")) {
				for(int i=0; i<scores.length; i++) {
					if(scores[i] >= max) {
						max = scores[i];
					}
					cnt++;
					sum += scores[i];
				}
				
				avg = (double)sum / cnt;
				
				System.out.println("최고 점수 : " + max);
				System.out.println("평균 점수 : " + avg);
				
			} else {
				if(input.equals("5")) {
					System.out.println("프로그램 종료");
					break;
				}
			}
		}
	}
}
package java1209;

import java.util.Scanner;

public class arrEx03_01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		
		int[] scores = null; //배열의 수를 지정하지 않고 null값으로 지정해도 된다.
		int a;
		int max = 0;
		int sum = 0;
		int cnt = 0;
		double avg = 0.0;
		String input;
		boolean b = true;
		
		do {
			System.out.println("-----------------------------------------------");
			System.out.println("1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료");
			System.out.println("-----------------------------------------------");
			
			System.out.print("선택> ");
			input = scan.next();
			
			switch(input){
				case "1" :
					System.out.print("학생수> ");
					a = scan.nextInt();
					scores = new int[a];
					break;
				
				case "2" :
					for(int i=0; i<scores.length; i++) {
						System.out.print("scores[" + i + "]> ");
						scores[i] = scan.nextInt();
					}
					break;
					
				case "3" :
					for(int i=0; i<scores.length; i++) {
						System.out.println("scores[" + i + "]> " + scores[i]);
					}
					break;

				case "4" :

					for(int i=0; i<scores.length; i++) {
						if(scores[i] >= max) {
							max = scores[i];
						}
						cnt++;
						sum += scores[i];
					}
					
					avg = (double)sum / cnt;
					
					System.out.println("최고 점수 : " + max);
					System.out.println("평균 점수 : " + avg);
					break;

				case "5" :
					System.out.println("프로그램 종료");
					b = false;
					break;
			}
			
			if(b == false) break;
			
		} while(b);
	}
}

 

1번은 while과 if를 이용한 문제 풀이 방법, 2번은 do~while과 switch문을 이용한 문제 풀이 방법입니다.

문제의 출력 값과 동일한 결과가 나타납니다.

 

 

쉬어가는 문제) 구구단 중첩 for 문

 

package java1209;

import java.util.Scanner;

public class gugudan {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		int n;
		
		System.out.print("보고싶은 단 수를 입력하세요 : ");
		n = scan.nextInt();
		
		for(int i=0; i < n; i++) {
			System.out.println(i+1 + "단");
			for(int j=0; j < n; j++) {
				System.out.println((i+1) + " * " + (j+1) + " = " + (i+1)*(j+1));
			}
			System.out.println();
		}

	}
}

 

보고싶은 단 수를 입력하게 되면 해당 단까지 구구단이 출력하게 됩니다.

 

 

4. 문제 4번

 

문제 4) 10명의 학생들의 점수들을 입력 받아 평균을 구하고 각 점수가 평균 이상인지 혹은 평균보다 작은지를 보여준다.

[배열이용]

 

출력)
학생들 10명의 점수를 입력하세요 : 89 65 47 92 84 70 76 98 85 51
평균 = 75.7
점수 89점은 평균 이상이다.
점수 65점은 평균보다 작다.
점수 47점은 평균보다 작다.
점수 92점은 평균 이상이다.
점수 84점은 평균 이상이다.
점수 70점은 평균보다 작다.
점수 76점은 평균 이상이다.
점수 98점은 평균 이상이다.
점수 85점은 평균 이상이다.
점수 51점은 평균보다 작다.
package java1209;

import java.util.Scanner;

public class arrEx04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		int num;
		int sum = 0;
		int cnt = 0;
		double avg = 0.0;
		
		System.out.print("학생 수를 입력해주세요 : ");
		num = scan.nextInt();
		
		System.out.print("학생들 " + num +"명의 점수를 입력하세요 : ");
		int[] arr = new int[num];
		
		for(int i=0; i<arr.length; i++) {
			arr[i] = scan.nextInt();
			sum += arr[i];
			cnt++;
		}
		
		avg = (double)sum / cnt;
		
		System.out.println("평균 = " + avg);
		
		for(int i=0; i < arr.length; i++) {
			if(arr[i] >= avg) {
				System.out.println("점수 " + arr[i] + "점은 평균 이상이다.");
			} else {
				System.out.println("점수 " + arr[i] + "점은 평균보다 작다.");				
			}
		}
	}
}

 

위의 출력값과 동일한 결과 값이 나타납니다.

space bar를 이용해 점수를 입력하면 enter를 여러번 사용하지 않아도 여러번의 입력이 가능합니다.

 

 

5. 문제 5번

 

문제 5) 입력할 점수들의 수와 해당 점수들을 입력하고 순서대로, 역순으로, 오름차순으로, 내림차순으로 결과가 출력되도록 코드를 작성하시오.

 

출력]
입력할 점수들의 수를 입력하세요 : 5
1번째 점수를 입력하세요: 56
2번째 점수를 입력하세요: 74
3번째 점수를 입력하세요: 46
4번째 점수를 입력하세요: 52
5번째 점수를 입력하세요: 63

본래 순서의 점수들
56 74 46 52 63
반대 순서의 점수들
63 52 46 74 56
오름 차순의 점수들
46 52 56 63 74
내림 차순의 점수들
74 63 56 52 46
package java1209;

import java.util.Scanner;

public class arrEx05 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		int n;
		
		System.out.print("입력할 점수들의 수를 입력하세요 : ");
		n = scan.nextInt();
		
		int[] arr = new int[n];
		
		for(int i=0; i<arr.length;i++) {
			System.out.print(i+1 + "번째 점수를 입력하세요: ");
			arr[i] = scan.nextInt();
		}
		
		System.out.println("본래 순서의 점수들");
		
		for(int i=0; i<arr.length;i++) {
			System.out.print(arr[i] + " ");
		}
		
		System.out.println();
		System.out.println("반대 순서의 점수들");
		
		for(int i=0; i<arr.length;i++) {
			System.out.print(arr[arr.length-i-1] + " ");
		}
		
		System.out.println();
		System.out.println("오름 차순 점수들");
		
		for(int i=0; i<arr.length;i++) {
			for(int j=i+1; j<arr.length;j++) {
				if(arr[i] > arr[j]) {
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
			System.out.print(arr[i] + " ");
		}
		
		System.out.println();
		System.out.println("내림 차순 점수들");
		
		for(int i=0; i<arr.length;i++) {
			for(int j=i+1; j<arr.length;j++) {
				if(arr[i] < arr[j]) {
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
			System.out.print(arr[i] + " ");
		}
			
	}
}

 

위 문제와 같은 출력 값이 도출이 되고 오름차순, 내림차순 적용을 위해서는 중첩 for문과 temp라는 변수를 이용해 배열의 순서를 바꾸었습니다.

 

문제를 많이 풀어보면서 모든 경우의 수에 대해 생각하고 문제를 해결할 수 있는 능력을 길러야겠어요!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

 

728x90
반응형

'BackEnd > Java' 카테고리의 다른 글

[java] 반복문(for, while, do~while)  (0) 2022.12.13
[java] 메서드(method 기능)  (1) 2022.12.13
[java] 다차원 배열  (1) 2022.12.13
[java] 조건문(if, switch문)  (0) 2022.12.12
[java] 배열(array)  (0) 2022.12.12