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차원 배열문제는 생략.