호쌤
호쌤 Just For Fun

[Java] 1차 배열 연습문제

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[Java] 1차 배열 연습문제≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

[Java] 1차 배열 연습문제

1차 배열을 공부한 후 간단히 도전해 볼 수 있는 연습문제들 입니다.

배열 기본 문제

ArrayTest1.java

원소가 1, 3, 5, 7, 9인 1차배열 myarr을 정의하고 이 배열과 크기가 동일한 mycopy 배열을 정의하세요.

그런 후 반복문을 사용하여 myarr의 모든 원소를 mycopy에 같은 자리에 복사하여 출력하세요.

출력결과
1
2
3
4
5
mycopy[0]=1
mycopy[1]=3
mycopy[2]=5
mycopy[3]=7
mycopy[4]=9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ArrayTest1 {
    public static void main(String[] args) {
        int[] myarr = { 1, 3, 5, 7, 9 };

        // myarr과 같은 크기의 배열 정의
        int[] mycopy = new int[myarr.length];

        // 배열 복사
        for (int i=0; i<myarr.length; i++) {
            mycopy[i] = myarr[i];
        }

        for (int i=0; i<mycopy.length; i++) {
            System.out.printf("mycopy[%d]=%d\n", i, mycopy[i]);
        }
    }
}

ArrayTest2.java

두 개의 배열 myarr1과 myarr2를 정의하세요.

myarr1의 원소는 1, 3, 5, 7, 9 이고 myarr2의 원소는 3, 7, 2, 6, 1 입니다.

이 두 배열을 비교하여 동일한 원소를 모두 출력하고 동일 원소가 모두 몇 개 있는지 출력하는 프로그램을 작성하세요.

출력결과
1
2
3
4
1번째 동일원소: 1
2번째 동일원소: 3
3번째 동일원소: 7
동일 원소는 총 3개 입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class ArrayTest2 {
    public static void main(String[] args) {
        int[] myarr1 = {1, 3, 5, 7, 9};
        int[] myarr2 = {3, 7, 2, 6, 1};

        int sameCount = 0;

        for (int i=0; i<myarr1.length; i++) {
            for (int j=0; j<myarr2.length; j++) {
                if (myarr1[i] == myarr2[j]) {
                    sameCount++;
                    System.out.printf("%d번째 동일원소: %d\n", sameCount, myarr1[i]);
                    break;
                }
            }
        }

        System.out.printf("동일 원소는 총 %d개 입니다.\n", sameCount);
    }
}

ArrayTest3.java

원소가 true, false, false, true, false로 구성된 배열 checkList를 정의하고 반복문을 사용하여 각 원소의 값이 반대로 설정되도록 구현하세요.

truefalse로, falsetrue로 변경되면 됩니다.

출력결과
1
2
3
4
5
false
true
true
false
true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class ArrayTest3 {
    public static void main(String[] args) {
        boolean[] checkList = { true, false, false, true, false };

        // 배열의 길이만큼 반복하여 모든 원소를 스캔
        for (int i=0; i<checkList.length; i++) {
            // i번째 원소를 부정하여 다시 그 자리에 덮어 씌움
            // boolean값은 부정하면 반대의 값이 된다.
            // !true -> false
            // !false -> true
            checkList[i] = !checkList[i];
        }

        for (int i=0; i<checkList.length; i++) {
            System.out.println(checkList[i]);
        }
    }
}

MyPay.java

다음은 민수가 일주일간 일한 시간을 기록한 표이다.

4 3 5 7 2 8 6

평일에는 시급이 5800원 이지만 주말에는 7300원이라고 할 때 민수가 일주일간 일한 급여를 계산하여 출력하는 프로그램을 작성하시오.

출력결과
1
일주일간의 총 급여: 224000원
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyPay {
    public static void main(String[] args) {
        int[] times = {4, 3, 5, 7, 2, 8, 6};

        int pay = 0;
        for (int i=0; i<times.length; i++) {
            if (i < 5) {
                pay += times[i] * 5800;
            } else {
                pay += times[i] * 7300;
            }
        }

        System.out.printf("일주일간의 총 급여: %d원\n", pay);
    }
}

장바구니 문제

다음은 어느 쇼핑몰의 장바구니에 담긴 상품에 대한 화면이다. 다음의 요구사항을 충족하는 프로그램을 작성하시오.

장바구니

TotalPrice.java

상품의 가격을 원소로 갖는 1차 배열 price와 각 상품의 수량을 원소로 갖는 1차 배열 qty를 정의하였을 때 이 사람이 총 얼마를 결제해야 하는지 총 결제금액을 구하는 프로그램을 작성하시오.

출력결과

1
전체 결재 금액: 415200원
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class TotalPrice {
    public static void main(String[] args) {
        // 상품단가
        int[] price = { 38000, 20000, 17900, 17900 };

        // 수량
        int[] qty = { 6, 4, 3, 5 };

        // 합계금액
        int total = 0;

        for (int i=0; i < price.length; i++) {
            // price와 qty는 길이가 동일하므로,
            // price만큼의 반복을 진행하면서 qty도 함께 처리한다.
            total += price[i] * qty[i];
        }

        System.out.println("전체 결재 금액: " + total + "원");
    }
}

MaxPrice.java

장바구니 내역에서 상품금액(판매가x수량)이 가장 비싼 항목은 그 금액이 얼마인지 출력하는 프로그램을 작성하시오.

출력결과

1
가장 높은 상품금액 : 228000원
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class MaxPrice {
    public static void main(String[] args) {
        // 상품단가
        int[] price = { 38000, 20000, 17900, 17900 };

        // 수량
        int[] qty = { 6, 4, 3, 5 };

        // 가장 비싼 금액을 저장할 변수.
        int max = 0;

        for (int i=0; i < price.length; i++) {
            int tmp = price[i] * qty[i];

            // 판매가 * 수량이 기존의 최대값보다 크다면?
            if ( tmp > max ) {
                // 최대값을 교체
                max = tmp;
            }
        }

        System.out.println("가장 높은 상품금액: " + max);
    }
}

FreeDelivery.java

장바구니 내역의 모든 상품이 개별 배송이라고 한다. 상품금액(판매가x수량)이 8만원 이상인 경우 무료 배송이 된다고 할 때 무료로 배송되는 장바구니 항목은 총 몇 개인가?

출력결과

1
무료배송항목: 3건
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class FreeDelivery {
    public static void main(String[] args) {
        // 상품금액
        int[] price = { 38000, 20000, 17900, 17900 };

        // 수량
        int[] qty = { 6, 4, 3, 5 };

        // 무료배송될 항목 수
        int count = 0;

        for (int i=0; i < price.length; i++) {
            int tmp = price[i] * qty[i];

            // 8만원 이상인지 검사
            if ( tmp >= 80000 ) {
                count++;
            }
        }

        System.out.println("무료배송항목: " + count + "건");
    }
}

상품목록 정렬 문제

다음은 어느 쇼핑몰의 상품목록 화면이다. 다음의 요구사항을 충족하는 프로그램을 작성하시오.

장바구니

SortAsc.java

상품금액을 화면에 표시되는 순서대로 price 라는 이름의 배열에 저장하고 낮은가격순으로 정렬하여 출력하는 프로그램을 구현하시오.

출력결과
1
낮은가격순 --> 94000,109000,109000,119000,209000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class SortAsc {
    public static void main(String[] args) {
        int[] price = { 209000, 109000, 119000, 109000, 94000 };

        // 정렬
        for (int i=0; i<price.length-1; i++) {
            for (int j = i +1; j < price.length; j++) {
                if ( price[i] > price[j] ) {
                    // 변수간의 직접 교환은 불가능하므로,
                    // 임시 변수를 추가하여 값을 교환해야 한다.
                    int tmp = price[i];
                    price[i] = price[j];
                    price[j] = tmp;
                }
            }
        }

        System.out.print("낮은가격순 --> ");
        for (int i = 0; i < price.length; i++) {
            System.out.print(price[i]);

            // 배열의 인덱스 + 1이 배열의 길이보다 작다는 조건은
            // 배열의 마지막 항목을 제외한 나머지에 대한 처리가 가능하다.
            if (i + 1 < price.length) {
                System.out.print(",");
            }
        }

        System.out.println();
    }
}

SortDesc.java

상품금액을 화면에 표시되는 순서대로 price 라는 이름의 배열에 저장하고 높은가격순으로 정렬하여 출력하는 프로그램을 구현하시오.

출력결과
1
높은가격순 --> 209000,119000,109000,109000,94000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class SortDesc {
    public static void main(String[] args) {
        int[] price = { 209000, 109000, 119000, 109000, 94000 };

        // 정렬
        for (int i=0; i<price.length-1; i++) {
            for (int j = i +1; j < price.length; j++) {
                if ( price[i] < price[j] ) {
                    int tmp = price[i];
                    price[i] = price[j];
                    price[j] = tmp;
                }
            }
        }

        System.out.print("높은가격순 --> ");
        for (int i = 0; i < price.length; i++) {
            System.out.print(price[i]);

            if (i + 1 < price.length) {
                System.out.print(",");
            }
        }

        System.out.println();
    }
}

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[Java] 1차 배열 연습문제≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

comments powered by Disqus