라라리라

2023.08.05 / Step 8 [이차배열] - 코딩 17 일차 본문

코딩/2023 JavaScript Console

2023.08.05 / Step 8 [이차배열] - 코딩 17 일차

헤실 2023. 8. 5. 18:11

이차배열3_개념01_가로세로.html

 

<script>

    /*
        [문제]
            arr배열의 가로 합을 garo배열에 추가하시오.
            arr배열의 세로 합을 sero배열에 추가하시오.
        [정답]
            garo = [410, 710, 1210]
            sero = [503, 606, 609, 612]    
    */

    let arr = [
        [101, 102, 103, 104],
        [101, 202, 203, 204],
        [301, 302, 303, 304]
     ]

    let garo = [];
    let sero = [];

   for(let i = 0 ; i < arr.length; i ++){
    let sum = 0;
    for(let j = 0 ; j < arr[i].length; j++){
        sum+= arr[i][j];
    }
    garo.push(sum);
   }
   document.write("garo = " + garo + "<br>");

   for(let i = 0; i < arr[0].length; i++){
    let sum = 0;
    for(let j = 0; j < arr.length; j++){
        sum+= arr[j][i];
    }
    sero.push(sum);
   }
   document.write("sero = " + sero + "<br>");

</script>

 


이차배열3_개념02_세로출력.html

 

<script>

    /*
        [문제]
            arr배열을 각 세로별로 출력해보시오.
        [정답]
            [1] 0 0 3 1 4 2
            [2] 0 2 1 4 1 1
            [3] 0 0 3 2 4 4
            [4] 0 0 0 0 0 3
            [5] 3 3 1 2 4 3    
    */

    let arr = [
        [0,0,0,0,3],
        [0,2,0,0,3],
        [3,1,3,0,1],
        [1,4,2,0,2],
        [4,1,4,0,4],
        [2,1,4,3,3]  
    ];

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


</script>

 


이차배열3_개념03_길이다른이차원.html

 

<script>

    /*
        [개념] 길이가 다른 이차원 배열
            이차원 배열은 길이를 다르게 구성할 수도 있다.    
    */

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

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

    let b = [];
    let c = [1, 2, 3];
    let d = [1, 2];
    let e = [1, 2, 3, 4, 5];

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

    let f = [];
    for(let i=0; i<3; i++) {
        let r = Math.floor(Math.random() * 9) + 1;
        let temp = [];
        for(let j=0; j<r; j++) {
            temp.push(j);
        }
        f.push(temp);
    }
    for(let i=0; i<f.length; i++) {
        document.write(f[i] + "<br>");
    }


</script>

 


이차배열3_문제01_랜덤이차원.html

 

<script>

    /*
        [문제]
            [1] 빈 배열을 만들어 랜덤으로 숫자(1~5)를 저장하고,
                그 숫자만큼 연속으로 추가하시오.
            [2] 위 규칙을 다섯 번 반복하여 이차원 배열로 만들어보시오.
        [예시]
            [3, 3, 3]
            [4, 4, 4, 4]
            [2, 2]
            [4, 4, 4, 4]
            [4, 4, 4, 4]    
    */

    let arr = [];

    for(let i = 0 ; i < 5; i ++){
        let r = Math.floor(Math.random() * 5) + 1;
        let temp = [];
        for(let j =0 ; j < r; j++){
            temp.push(r);
        }
        arr.push(temp);
        document.write(arr[i] + "<br>");
    }
   

</script>

 


이차배열3_문제02_약수이차원.html

 

<script>

    /*
        [문제]
            랜덤(2~100) 숫자를 저장해 그 수의 약수를 모두 arr배열에 저장한다.
            위 규칙을 다섯 번 반복하여 이차원 배열을 만드시오.
        [정답]
            27 [1, 3, 9, 27]
            72 [1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72]
            76 [1, 2, 4, 19, 38, 76]
            94 [1, 2, 47, 94]
            91 [1, 7, 13, 91]      
    */

    let arr = [];


    for(let i = 0; i < 5; i++){
        let r = Math.floor(Math.random() * 99) + 2;
        let temp = [];
        document.write("r = " + r)
        for(let j = 1; j <= r; j++){
            if(r % j == 0){
                temp.push(j);
            }
           
        }
        arr.push(temp);
        document.write( " [ " + arr[i] + " ]<br>");
    }

</script>

 


이차배열3_문제03_반으로합치기.html

 

<script>

    /*
        [문제]
            a배열의 값들을 두 개씩 더해서 하나로 합친다.
            각 가로를 기준으로 보았을 때,  
            0번과 1번을 합치고,
            2번과 3번을 합치고,
            4번과 5번을 합친다.
           
            위와 같은 방법으로 남은 두 줄도 반복해
            b배열에 추가하시오.
        [예시]
            [ 3, 1, 2, 5, 6, 1] : [4,7,7]
            [ 2, 5, 1, 3, 5, 4] : [7,4,9]
            [ 1, 2, 1, 3, 9, 5] : [3,4,14]
        [정답]
            [4, 7, 7]
            [7, 4, 9]
            [3, 4, 14]    
    */

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

    let b = [];

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

</script>

 


이차배열3_문제04_세로합.html

 

<script>

    /*
        [문제]
            arr배열의 각 세로 합을 total배열에 추가하시오.
        [정답]
            total = [10, 9, 13, 3, 16]    
    */

    let arr = [
        [0,0,0,0,3],
        [0,2,0,0,3],
        [3,1,3,0,1],
        [1,4,2,0,2],
        [4,1,4,0,4],
        [2,1,4,3,3],  
    ];
    let total = [];

    for(let i = 0; i < arr[0].length; i ++){
       
        let sum = 0;
        for(let j = 0; j < arr.length; j++){
            sum += arr[j][i]
        }
        total.push(sum);
    }
    document.write("total = " + total + "<br>");

</script>

 


이차배열3_문제05_세로그래프.html

 

<script>

    /*
        [문제]
            data배열의 각 숫자만큼 graph에 숫자1을
            세로로 위에서 아래로 채우시오.
        [정답]
            [1,1,1,1,1,1]
            [1,1,1,1,1,1]
            [1,1,1,0,1,1]
            [0,1,1,0,1,1]
            [0,1,1,0,1,0]
            [0,1,0,0,1,0]
            [0,1,0,0,1,0]
            [0,0,0,0,1,0]
            [0,0,0,0,1,0]
            [0,0,0,0,1,0]
    */

    let data = [3, 7, 5, 2, 10, 4];

    let graph = [
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0]
    ];

    for(let i = 0; i < graph[0].length; i++){
        for(let j =0; j < data[i]; j++){
            graph[j][i] = 1;
        }
       
    }
    for(let i = 0 ; i < graph.length ; i++){
        document.write(graph[i] + "<br>");
    }

</script>

 


이차배열3_문제07_지렁이.html

 

<script>

    /*
        [문제]
            랜덤으로 (1~4)를 저장하고
            아래와 같은 경우로 배열에 저장하시오.
        [정답]
            r = 1
                123     00 01 02
                654     12 11 10
                789     20 21 22
           
            r = 2
                761     20 12 00  02 21 00
                852     21 11 01  12 11 10
                943     22 10 02  22 01 20
           
            r = 3
                987     22 21 20
                456     10 11 12
                321     02 01 00
           
            r = 4
                349    02 10 22
                258    01 11 21
                167    00 12 20
    */

    let snake = [
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]
    ];

    let r = Math.floor(Math.random() * 4) + 1;
    r = 1;
    document.write("r = " + r + "<br>");
   
    if(r == 1){
    let num = 1;
    let turn = true;
    for(let i = 0; i < 3; i++){
       
        for(let j = 0 ; j < 3; j ++){
            if(turn == true){
                snake[i][j] = num;
                num++;
            }
            else if(turn == false) {
                snake[i][2 -j] = num;
                num++;
            }
            turn = !turn;
        }
    }
    for(let i = 0; i < 3; i++){
        document.write(snake[i] + "<br>");
    }
}
    if(r == 2){
        let turn = true;
        let num = 1;
        for(let i = 0; i < 3; i ++){
        for(let j = 0 ; j< 3; j++){
            if(turn == true){
            snake[j][2 -i] = num;
            num ++;
         }else {
            snake[2- j][2 - i] = num;
            num++;
         }
        }
        turn = !turn;
    }
    for(let i = 0; i< 3; i++){
        document.write(snake[i] + "<br>");
    }
}
if(r == 3){
    let num = 1;
    let turn = true;
    for(let i =0; i < snake.length; i++){
        for(let j = 0; j < snake[i].length; j++){
            if(turn == true){
                snake[2-i][2-j] = num;
                num++;
            }
            else{
                snake[2-i][j] = num;
                num++;
            }
        }
        turn = !turn;
    }
    for(let i = 0; i < snake.length; i++){
        document.write(snake[i] + "<br>");
    }
}
if(r == 4){
    let num = 1;
    let turn = true;
    for(let i = 0 ; i < 3; i ++){
        for(let j = 0; j < 3; j++){
            if(turn){
                snake[2 -j][i] = num;
                num++;
            }
            else {
                snake[j][i] = num;
                num++;
            }
        }
        turn = !turn;
    }
    for(let i = 0; i < snake.length; i ++){
        document.write(snake[i] + "<br>");
    }
}


</script>