자바 기초

자바기초개념 다시잡기 자바의정석 - 연습문제 5장

H-V 2021. 7. 24. 18:42

1. Chapter 5 - 배열

- 배열 arr에 담긴 모든 값을 더하는 프로그램을 완성하시오.
public class Ch_5 {
	public static void main(String[] args) {
		int[] arr = {10, 20, 30, 40, 50};
		int sum = 0;
		for (int i=0; i<arr.length; i++) {
			sum += arr[i];
		}
		System.out.println("sum="+sum);
	}
}
sum=150


- 2차원 배열 arr에 담긴 모든 값의 총합과 평균을 구하는 프로그램을 완성하시오.
public class Ch_5 {
	public static void main(String[] args) {
		int[][] arr = {
				{ 5, 5, 5, 5, 5},
				{10,10,10,10,10},
				{20,20,20,20,20},
				{30,30,30,30,30}
				};
		System.out.println(arr[0].length);
		int total = 0;
		float avg = 0;
		
		for (int i=0; i<arr.length; i++) { //열
			for (int j=0; j<arr[i].length; j++) {//행
				total += arr[i][j];//1열에서 한행 쫙, 2열에서 한행 쫙
			}
		}
		avg = total / (float)(arr.length * arr[0].length);//4 * 5
		System.out.println("total="+total);
		System.out.println("avg="+avg);
	}
}
5
total=325
avg=16.25


-1과 9사이의 중복되지 않은 숫자로 이루어진 3자리 숫자를 만들어내는 프로그램을 만드시오.
public class Ch_5 {
	public static void main(String[] args) {
		int[] ballArr = {1,2,3,4,5,6,7,8,9};
		int[] ball3 = new int[3];
		
		for (int i=0; i<ballArr.length; i++) {
			int j = (int)(Math.random()*ballArr.length);
			int tmp = 0;
			
			tmp = ballArr[i]; //처음 1번이오고 그다음부터 랜덤 값
			ballArr[i] = ballArr[j]; // 1~9 랜덤 숫자 넣기
			ballArr[j] = tmp; //처음 1번이오고 그다음부터 랜덤 값
		}
		System.arraycopy(ballArr, 0, ball3, 0, 3); // ballArr의 앞 3개를 ball3로 복사
		for (int i=0; i<ball3.length; i++) {
			System.out.println(ball3[i]);
		}
		System.out.println();
	}
}
7
4
2


- 거스름돈을 몇개의 동전으로 지불할 수 있는지 계산하는 프로그램을 만드시오.
public class Ch_5 {
	public static void main(String[] args) {
		// 큰 금액의 동전을 우선적으로 거슬러 줘야한다.
		int[] coinUnit = {500, 100, 50, 10};
		int money = 2680;
		System.out.println("money="+money);
		
		for(int i=0;i<coinUnit.length;i++) {
				System.out.println(coinUnit[i]+"원:" + money/coinUnit[i]);
				money = money%coinUnit[i];
//				System.out.println("money="+money);
		}
	}
}
money=2680
500원:5
money=180
100원:1
money=80
50원:1
money=30
10원:3
money=0


-자판기 프로그램 짜기
public class Ch_5 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int coffee = 300;
		int cocoa = 200;
		int coffeeCount = 10;
		int cocoaCount = 10;
		int menu = 0;
		
		System.out.println("메뉴를 골라주세요>>");
		System.out.println("1.커피 2.코코아 3.남은 수량 4.종료");
		
		while(true) {
			menu = sc.nextInt();
			if(menu == 1) {
				System.out.println("커피를 고르셨습니다. 금액은 300원 입니다.");
				int input = sc.nextInt();
				if (input >= coffee) {
					System.out.println("커피 나왔습니다.");
					System.out.println("거스름돈은 " + (input - coffee) + " 입니다.");
					coffeeCount -= 1;
					System.out.println("커피 남은 수량: " + coffeeCount);
					System.out.println("1.커피 2.코코아 3.남은수량 4.종료");
				}
				else if(input < cocoa) {
					System.out.println("넣으신 금액(" + input + ") 을 반환하고 메뉴로 돌아갑니다.");
					System.out.println("1.커피 2.코코아 3.남은수량 4.종료");
					}
				}
			if(menu == 2) {
				System.out.println("코코아를 고르셨습니다. 금액은 200원 입니다.");
				int input = sc.nextInt();
				if (input >= cocoa) {
					System.out.println("코코아 나왔습니다.");
					System.out.println("거스름돈은 " + (input - cocoa) + " 입니다.");
					coffeeCount -= 1;
					System.out.println("코코아 남은 수량: " + cocoaCount);
					System.out.println("1.커피 2.코코아 3.남은수량 4.종료");
				}
				else if (input < cocoa) {
					System.out.println("넣으신 금액(" + input + ") 을 반환하고 메뉴로 돌아갑니다.");
					System.out.println("1.커피 2.코코아 3.남은수량 4.종료");
					}
				}
			if(menu == 3) {
				System.out.println("현재 남은 수량을 봅니다.");
				System.out.println("커피:"+coffeeCount+" 코코아:"+cocoaCount);
				System.out.println("1.커피 2.코코아 3.남은수량 4.종료");
				}
			if(menu == 4) {
				System.out.println("종료를 선택하셨습니다. 프로그램을 종료 합니다.");
				break;
				
			}
		}
	}
}


-배열 answer에 담긴 데이터를 읽고 각 숫자의 개수를 세어서 개수만큼 ‘*’을 찍어서 그래프를 그리는 프로그램을 작성하시오
public class Ch_5 {
	public static void main(String[] args) {
		int[] answer = { 1,4,4,3,1,4,4,2,1,3,2 };
		int[] counter = new int[4];
		
		for (int i=0; i<answer.length; i++) {
			counter[answer[i]-1]++;
			System.out.println(Arrays.toString(counter));
//			System.out.println(answer[i]);
		}
		
		for (int i=0; i<counter.length;i++) {
			System.out.print(counter[i]);
			for(int j=0; j < counter[i];j++) {
				System.out.print("*"); // counter[i]의 값 만큼 ‘*’을 찍는다.
				}
			System.out.println();
		}
	}
}
[1, 0, 0, 0]
[1, 0, 0, 1]
[1, 0, 0, 2]
[1, 0, 1, 2]
[2, 0, 1, 2]
[2, 0, 1, 3]
[2, 0, 1, 4]
[2, 1, 1, 4]
[3, 1, 1, 4]
[3, 1, 2, 4]
[3, 2, 2, 4]
3***
2**
2**
4****


나머지 2차원 3차원 배열문제는 생략.