라라리라

2023.08.06 / Step 8 [이차배열] - 코딩 18 일차 본문

코딩/2023 JavaScript Console

2023.08.06 / Step 8 [이차배열] - 코딩 18 일차

헤실 2023. 8. 6. 20:36

이차배열4_개념01_비교일차원.html

 

<script>

    /*
        [문제]
            a배열과 b배열을 비교해서 서로 겹치는 값을 0으로 변경하시오.
        [정답]
            a = [
                [0, 0, 0],
                [0, 7, 2]
            ]
            b = [0, 6, 0, 0, 0]    
    */

    let a = [
        [1, 4, 3],
        [5, 7, 2]
    ];

    let b = [4, 6, 3, 1, 5];

    for(let i = 0 ; i < b.length; i ++){
        for(let k = 0; k < a.length; k++){
            for(let j = 0; j < a[k].length; j++){
                if(b[i] == a[k][j]){
                    a[k][j] = 0;
                    b[i] = 0;
                }
            }
        }
    }
   
   for(let i  = 0 ; i < a.length; i++){
    document.write(a[i] + "<br>");
   }
   document.write("<br>");
   document.write(b);
</script>

 


이차배열4_개념02_비교이차원.html

 

<script>

    /*
        [문제]
            a배열과 b배열을 비교해서 서로 겹치는 값을 0으로 변경하시오.
        [정답]
        a = [
                [0, 4, 0],
                [0, 0, 0]
            ]
        b = [
                [0, 0, 0],
                [0, 0, 8]    
            ]    
    */

    let a = [
        [1, 4, 3],
        [5, 7, 2]
    ];
    let b = [
        [5, 3, 2],
        [1, 7, 8]
    ];

    for(let i = 0; i < a.length; i ++){
        for(let j = 0; j < a[i].length; j++){
            for(let k = 0; k < b.length; k++){
                for(let n = 0; n < b[k].length; n++){
                    if(a[i][j] == b[k][n]){
                        a[i][j] = 0;
                        b[k][n] = 0;
                    }
                }
            }
        }
    }
    for(let i = 0 ; i < a.length; i++){
        document.write(a[i] + "<br>");
    }
    document.write("<br>==============<br>")
    for(let i = 0 ; i < a.length; i++){
        document.write(b[i] + "<br>");
    }

</script>

 


이차배열4_개념03_밀기.html

 

<script>

    /*
        [문제]
            랜덤으로 dir배열의 값을 d에 저장한다.
            d값의 방향으로 arr배열의 모든값이 한칸씩 이동한다.
            밀린값은 반대편으로 저장된다.
        [예시1]
            d = "북"
        [결과1]    
            [1004,1005,1006,1007]
            [1008,1009,1010,1011]
            [1000,1001,1002,1003]

        [예시2]
            d = "동"
        [결과2]
            [1003,1000,1001,1002]
            [1007,1004,1005,1006]
            [1011,1008,1009,1010]  
           
        [예시3]
            d = "남"
        [결과3]
            [1008,1009,1010,1011]
            [1000,1001,1002,1003]
            [1004,1005,1006,1007]              

        [예시4]
            d = "서"
        [결과5]
            [1001,1002,1003,1000]
            [1005,1006,1007,1004]
            [1009,1010,1011,1008]  

    */

    let dir = ["북", "동", "남", "서"];
    let d = "";
    let arr = [
        [1000, 1001, 1002, 1003],
        [1004, 1005, 1006, 1007],
        [1008, 1009, 1010, 1011]
    ];
    d = "북"

    if(d == "북"){
        let temp = [0, 0, 0, 0];
        for(let i =0; i < arr.length - 1; i ++){
           
            for(let j = 0; j < arr[i].length; j++){
                temp[i][j] = arr[i][j];
                arr[i][j] = arr[i+1][j];
                arr[i+1][j] = temp[i][j];
            }
           
        }
       
    }
    for(let i =0 ; i < arr.length; i++){
        document.write(arr[i] + "<br>");
    }

    if(d == "동"){

    }

    if(d == "남"){

    }

    if(d == "서"){

    }


</script>

 


이차배열4_문제01_비교이차원중복.html

 

<script>

    /*
        [문제]
            a배열과 b배열을 비교해서
            서로 겹치는 값을 0으로 변경하시오.
            중복되는 값은 전부 0으로 변경하시오.
        [정답]
        a = [
            [0, 4, 0],
            [0, 0, 0],
            [0, 4, 0]
        ]
        b = [
            [0, 0, 0],
            [0, 0, 8],
            [6, 0, 0]
        ]    
    */

    let a = [
        [1, 4, 3],
        [5, 7, 2],
        [5, 4, 1]
    ];
   
    let b = [
        [5, 3, 2],
        [1, 7, 8],
        [6, 5, 1]
    ];
   


    for(let i = 0; i < a.length; i++){
        for(let j = 0; j < a.length; j++){
            for(let k = 0; k < b.length; k++){
                for(let l = 0; l < b.length; l++){
                    if(a[i][j] == b[k][l]){
                        a[i][j] = 0;
                        b[k][l] = 0;
                    }
                }
            }
        }
    }

    for(let i = 0; i < a.length; i++){
        document.write(a[i] + "<br>");
    }
    document.write("<br>");
    for(let i = 0; i < b.length; i++){
        document.write(b[i] + "<br>");
    }


</script>

 


이차배열4_문제02_상점주문.html

 

<script>

    /*
        [문제]
            info는 온라인 쇼핑몰 상품 정보이다.
            가로를 기준으로 상품번호와 가격이다.
            예를 들어 [1001,500]은 1001은 상품 번호이고 500은 상품 가격이다.
           
            order는 오늘 주문 목록이다.
            예를들어 [1001,3]은 1001상품을 3개 주문한 것이다.
           
            count에 오늘 판매한 상품별 개수와 총 금액을 저장 후 출력하시오.  
        [정답]
            [1001, 8, 4000]
            [1002, 5, 13500]
            [1003, 1, 1200]
            [1004, 2, 1600]
            [1005, 5, 11000]    
    */


    let info = [
        [1001, 500],
        [1002,2700],
        [1003,1200],
        [1004, 800],
        [1005,2200]
    ];

    let order = [
        [1001, 3],
        [1005, 5],
        [1003, 1],
        [1001, 4],
        [1004, 2],
        [1002, 3],
        [1001, 1],
        [1002, 2]
    ];

    let count = [
        [1001, 0, 0],
        [1002, 0, 0],
        [1003, 0, 0],
        [1004, 0, 0],
        [1005, 0, 0]
    ];



    for(let i = 0; i < count.length; i++){
        for(let j = 0; j < order.length; j++){
            if(count[i][0] == order[j][0]){
                count[i][1] += order[j][1];
                count[i][2] += order[j][1] * info[i][1];
            }
        }
    }
    for(let i = 0; i < count.length; i++){
        document.write(count[i] + "<br>");
    }

</script>

 


이차배열4_문제03_압축풀기.html

 

<script>

    /*
        [문제]
            a배열은 원래 한 줄로 있던 데이터를 압축한 데이터이다.
            가로를 기준으로 왼쪽 숫자는 저장할 숫자이고
            오른쪽 숫자는 저장할 숫자의 개수이다.
            예를 들어 첫 번째 줄의 [3,5] 는 33333을 뜻한다.
            아래 a배열의 모든 압축을 풀어 b배열에 저장하시오.
        [정답]
            b = [3,3,3,3,3,5,5,5,5,5,5,2,4,4,4]    
    */

    let a = [
        [3, 5],
        [5, 6],
        [2, 1],
        [4, 3]
    ];

    let b = [];

    for(let i = 0; i < a.length; i++){
        for(let j = 0; j < a[i][1]; j++){
            b.push(a[i][0]);
        }
    }
    document.write("b = " + b);

</script>

 


이차배열4_문제04_압축하기.html

 

<script>

    /*
        [문제]
            a배열은 압축하기 전 데이터이다.
            다음데이터를 압축 하시오.
           
            압축 기준은 데이터와 개수로 저장한다.
            예를 들어 3이 연속으로 5개이므로
            b = [[3,5]]
            다시 5가 6개이므로
            b = [[3,5],[5,6]]
            위와 같이 마지막까지 반복하시오.  
        [정답]    
            [3, 5]
            [5, 6]
            [2, 1]
            [4, 1]
            [2, 2]    
    */

    let a = [3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 2, 4, 2, 2];
    let b = [];

        let num = a[0];
        let count = 1;
        let i = 0;

        for(let i = 0; i < a.length; i++){
            if(num == a[i]){
                count++;
            } else {
                let temp = [];
                temp.push(num);
                temp.push(count);

                b.push(temp);

                num = a[i];
                count = 0;
            }

            if(i == a.length - 1){
                let temp = [];
                temp.push(num);
                temp.push(count);

                b.push(temp);
            }
        }
        for(let i = 0 ; i < b.length; i++){
            document.write(b[i] + "<br>");
        }

</script>

 


이차배열4_문제05_자판기.html

 

<script>

    /*
        [문제]
            철수는 편의점에서 아르바이트하고 있다.
            vending은 음료수 냉장고 물품 개수 상태이다.
            숫자는 아이템 번호이고 0은 비어있는 것을 뜻한다.

            냉장고는 최대 10개까지 저장할 수 있다.
            그리고 같은 종류의 아이템으로만 저장하며, 세로로 저장한다.
            box리스트는 현재 아이템 창고 재고를 표시한다.

            왼쪽숫자는 아이템번호이고 오른쪽 숫자는 개수이다.
            예를 들어 [1,4]는 1번 아이템을 뜻하고, 남은개수는 4개를 뜻한다.
            box에 있는 상품들로 채울 수 있을 만큼 채우고 최종상태를 출력하시오.
        [예시]
            1번 아이템은 4개 밖에 재고가 없다.
               
            [vending]
            [0,0,0,0,5,0],
            [0,0,0,0,5,0],
            [1,0,0,0,5,0],
            [1,0,0,0,5,6],
            [1,2,0,0,5,6],
            [1,2,3,0,5,6],
            [1,2,3,0,5,6],
            [1,2,3,4,5,6],
            [1,2,3,4,5,6],
            [1,2,3,4,5,6]
       
            [box]
            [1,0],
            [2,8],
            [3,3],
            [4,4],
            [5,8],
            [6,9]
           
            남은 아이템도 채워보자.
        [정답]    
            [0, 2, 0, 0, 5, 6]
            [0, 2, 0, 0, 5, 6]
            [1, 2, 3, 0, 5, 6]
            [1, 2, 3, 4, 5, 6]
            [1, 2, 3, 4, 5, 6]
            [1, 2, 3, 4, 5, 6]
            [1, 2, 3, 4, 5, 6]
            [1, 2, 3, 4, 5, 6]
            [1, 2, 3, 4, 5, 6]
            [1, 2, 3, 4, 5, 6]

            [1, 0]
            [2, 4]
            [3, 0]
            [4, 0]
            [5, 8]
            [6, 6]    
    */

    let vending = [
        [0, 0, 0, 0, 5, 0],
        [0, 0, 0, 0, 5, 0],
        [0, 0, 0, 0, 5, 0],
        [0, 0, 0, 0, 5, 6],
        [0, 2, 0, 0, 5, 6],
        [0, 2, 3, 0, 5, 6],
        [1, 2, 3, 0, 5, 6],
        [1, 2, 3, 4, 5, 6],
        [1, 2, 3, 4, 5, 6],
        [1, 2, 3, 4, 5, 6]
    ];

    let box = [
        [1, 4],
        [2, 8],
        [3, 3],
        [4, 4],
        [5, 8],
        [6, 9]
    ];

   
    for(let i = 0; i < vending[0].length; i++){
        let index = - 1;
        for(let j = vending.length - 1; j >= 0; j--){
            if(vending[j][i] == 0){
                index = j;
                break;
            }
        }
        document.write("index = " + index + "<br>");

        if(index != -1){
            let temp = box[i][1];
            for(let j = 0; j < temp; j++){
                vending[index][i] = box[i][0];
                box[i][1]--;

                if(box[i][1] == 0){
                    break;
                }

                if(index == 0){
                    break;
                }

                index--;
            }
        }

    }
    for(let i = 0; i < vending.length; i ++){
        document.write(vending[i] + "<br>");
    }
    document.write("<br>");
    for(let i = 0; i < box.length; i ++){
        document.write(box[i] + "<br>");
    }

</script>