라라리라

2023.08.04 / Step 8 [이차배열] - 코딩 16 일차 본문

코딩/2023 JavaScript Console

2023.08.04 / Step 8 [이차배열] - 코딩 16 일차

헤실 2023. 8. 4. 23:55

이차배열1_개념01_기본.html

 

<script>

    /*
        [개념] 이차원 배열
            배열 안에 배열을 넣어서 이차원으로 만들 수 있다.
            일반적인 사각형 데이터를 표현할 수 있다.
    */

    let arr = [
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]
    ];

    arr[0][0] = 1;
    arr[0][1] = 2;
    arr[0][2] = 3;

    arr[1][0] = 4;
    arr[1][1] = 5;
    arr[1][2] = 6;

    arr[2][0] = 7;
    arr[2][1] = 8;
    arr[2][2] = 9;

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



</script>

 


이차배열1_개념02_기본.html

 

<script>

    /*
        [문제]
            arr배열에 1~9를 순차적으로 저장하고 출력하시오.
        [정답]
            arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]    
    */

    let arr = [
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]
    ];


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

 


이차배열1_개념03_기본.html

 

<script>

    /*
        [문제]
            arr배열에 1~9를 순차적으로 저장하고 출력하시오.
        [정답]
            arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]      
    */

    let arr = [];

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

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

</script>

 


이차배열1_개념04_인덱스.html

 


<script>

    /*
        [문제]
            arr배열에 10~90까지 값을 저장 후
            랜덤으로 값 하나를 출력하시오.
        [예시]
            arr :  [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
            r1 : 1  r2 : 0
            40    
    */

    let arr = [
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]
    ];    


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

    let r1 = Math.floor(Math.random() * 3);
    let r2 = Math.floor(Math.random() * 3);
    document.write("r1 = " + r1 + " r2 = " + r2 + "<br>");

    document.write("arr = " + arr[r1][r2])
</script>

 


이차배열1_개념05_사각형.html

 

<script>

    /*
        [문제]
            arr배열에 랜덤(1~100) 값을 9개 저장 후
            사각형 모양으로 출력하시오.
        [예시]
            [38, 14, 54]
            [27, 29, 25]
            [39, 65, 11]    
    */

    let arr = [
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]
    ];  

   for(let i = 0; i < arr.length; i++){
    for(let j = 0; j < arr[i].length; j++){
        let r = Math.floor(Math.random() * 100) + 1;
        arr[i][j] = r;
    }
   }

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

 


이차배열1_문제01_기본.html

 

<script>

    let arr = [];
   
    /*
        [문제1]
            arr배열을 한 줄당 3개씩 3줄 총 9개로 이차원으로 만들고,
            랜덤값(1~100)을 9개 저장하시오.
        [예시1]
            [56, 64, 10]
            [100, 40, 12]
            [9, 70, 29]    
    */

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

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

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

    document.write("<br>==========================================<br>");
    /*
        [문제2]
            arr배열의 값 중에서 50이상을 전부 출력하시오.
        [예시2]
            56 64 100 70
    */  let sum = 0;
    let count = 0;
        for(let i = 0; i < arr.length; i++){
            for(let j = 0; j< arr[i].length; j++){
                if(arr[i][j] >= 50){
                    sum+=arr[i][j];
                    count++;
                    document.write(arr[i][j] + " ");
                }
            }
        }

    document.write("<br>==========================================<br>");

    /*
        [문제3]
            arr배열의 값 중에서 4의 배수만 출력하시오.
        [예시3]
            56 64 100 40 12    
    */
   
    for(let i = 0; i < arr.length; i++){
        for(let j = 0; j < arr[i].length; j++){
            if(arr[i][j] % 4 == 0){
                document.write(arr[i][j] + " ");
            }
        }
    }
    document.write("<br>==========================================<br>");

    /*
        [문제4]
             arr배열의 값 중에서 50이상인 수의 합을 출력하시오.
        [예시4]
            total = 290    
    */
   
    document.write("total = " + sum + "<br>");

    document.write("<br>==========================================<br>");

    /*
        [문제5]
            arr배열의 값 중에서 50이상인 수의 개수를 출력하시오.
        [예시5]
            count = 4    
    */

    document.write("count = " +  count + "<br>");

    document.write("<br>==========================================<br>");

</script>

 


이차배열1_문제02_교환.html

 

<script>

    /*
        [문제]
            [1] arr배열에 랜덤 값(1~100)을 9개 저장 후 출력하시오. oo
            [2] 랜덤으로 값 두 개를 선택 후 두 개의 위치를 교환 후 출력하시오.
        [예시]
            값 교체 전 >>>
            [46, 62, 75]
            [36, 18, 100]
            [26, 11, 39]

            r1 = 11
            r2 = 36
           
            값 교체 후 >>>
            [46, 62, 75]
            [11, 18, 100]
            [26, 36, 39]    
    */

    let arr = [
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]
    ];

    for(let i = 0; i < arr.length; i++){
        for(let j = 0; j< arr[i].length; j++){
            let r = Math.floor(Math.random() * 100)+ 1;
            arr[i][j] = r;

        }
        document.write(arr[i] + "<br>");
    }
   
    let id1y = Math.floor(Math.random() * 3);
    let id1x = Math.floor(Math.random() * 3);
    let id2y = Math.floor(Math.random() * 3);
    let id2x = Math.floor(Math.random() * 3);

    let r1 = arr[id1y][id1x];
    let r2 = arr[id2y][id2x];

    document.write("r1 = " + r1 + "<br>r2 = " + r2 +"<br>");

    let temp = arr[id1y][id1x];
    arr[id1y][id1x] = arr[id2y][id2x];
    arr[id2y][id2x] = temp;

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

</script>

 


이차배열2_개념01_가장큰값.html

 

<script>

    /*
        [문제]
            arr배열에 랜덤숫자(1~100)를 9개 저장하고,
            그 중에 가장 큰 값을 출력하시오.
        [예시]
            [5,  81, 71]
            [49, 85, 29]
            [63, 54, 27]
           
            max :  85    
    */
   
    let arr = [
        [0,0,0],
        [0,0,0],
        [0,0,0]
    ];
    let max = 0;
    for(let i = 0 ; i < arr.length; i++){
        for(let j = 0; j< arr[i].length; j++){
            let r = Math.floor(Math.random()* 100)+ 1;
            arr[i][j] = r;
            if(max < arr[i][j]){
            max = arr[i][j];
        }
        }
        document.write(arr[i] + "<br>");
       
    }
    document.write("<br>max = " + max);


</script>

 


이차배열2_개념02_셔플.html

 

<script>

    /*
        [문제]
            b배열의 10~90까지 값을
            a배열에 저장 후 셔플하시오.
        [예시]
            셔플 전 >>>
            [10, 20, 30]
            [40, 50, 60]
            [70, 80, 90]
           
            셔플 후 >>>
            [40, 20, 80]
            [10, 60, 90]
            [30, 70, 50]      
    */

    let a = [
        [0,0,0],
        [0,0,0],
        [0,0,0]
    ];

    document.write("셔플 전 >>><br>");

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

    document.write("셔플 후 >>><br>");

    for(let i = 0; i < a.length; i++){
        for(let j = 0 ; j< a[i].length; j++ ){
            let r1 = Math.floor(Math.random() * 3);
            let r2 = Math.floor(Math.random() * 3);
            let temp = a[i][j];
            a[i][j] = a[r1][r2];
            a[r1][r2] = temp;
        }
    }
    for(let i = 0; i < 3; i++){
        document.write(a[i] + "<br>");
    }
</script>

 


이차배열2_개념03_정렬.html

 

<script>

    /*
        [문제]
            a배열에 랜덤숫자(1~100) 9개 저장 후
            내림차순 정렬하시오.
        [예시]
            정렬 전 >>>
            [72, 23, 40]
            [67, 62, 88]
            [57, 54, 48]

            b = [72, 23, 40, 67, 62, 88, 57, 54, 48]
            b = [88, 72, 67, 62, 57, 54, 48, 40, 23]
           
            정렬 후 >>>
            [88, 72, 67]
            [62, 57, 54]
            [48, 40, 23]    
    */

    let arr = [
        [0,0,0],
        [0,0,0],
        [0,0,0]
    ];

        document.write("정렬 전>>> <br>");

        for(let i = 0; i < arr.length; i ++){
            for(let j = 0; j < arr[i].length; j++){
                let r = Math.floor(Math.random() * 100) + 1;
                arr[i][j] = r;
            }
            document.write(arr[i] + "<br>");
        }
        document.write("<br>일차배열로 변환>>> <br>");
        let b = [];
        for(let i = 0; i < arr.length; i++){
            for(let j = 0; j < arr[i].length; j++){
                b.push(arr[i][j]);
            }
        }
        document.write("b = " + b + "<br>")

        document.write("<br>일차배열을 내림차순으로 변환>>> <br>");
        for(let i = 0; i < b.length; i++){
            let max = b[i];
            let maxid = i;
            for(let j = i ; j < b.length; j++){
                if(max < b[j]){
                    max = b[j];
                    maxid = j;
                }
            }
            let temp = b[i];
            b[i] = b[maxid];
            b[maxid] = temp;
        }
        document.write("b = " + b + "<br>");

        document.write("<br>일차배열을 이차배열로 변환>>><br>");
        let num = 0;
        for(let i = 0; i < arr.length; i++){
            for(let j = 0; j< arr[i].length; j++){
                arr[i][j] = b[num];
                num++;
            }
            document.write(arr[i] +"<br>");
        }
   
</script>

 


이차배열2_개념04_구구단.html

 

<script>

    /*
        [문제]
            game배열의 가로 한 줄은 구구단 앞의 숫자와 뒤의 숫자를 의미한다.
            앞의 숫자와 뒤의 숫자의 곱을 result배열에 추가하시오.
        [예시]
            4 * 6 : result = [24]
            3 * 6 : result = [24, 18]
            ...
        [정답]
            result = [24, 18, 24, 81, 6, 42]    
    */

    let game = [
        [4,6],
        [3,6],
        [8,3],
        [9,9],
        [2,3],
        [6,7]
    ];

    let result = [];

   for(let i = 0; i < game.length; i++){
        let temp = 0;
    for(let j = 0; j < game[i].length - 1; j++){
        result.push(game[i][j] * game[i][j+1])
    }
   
   }
   document.write(result);


</script>

 


이차배열2_문제01_가위바위보.html

 

<script>

    /*
        [문제]
            아래 배열은 철수와 민수의 가위바위보 데이터이다.
            왼쪽이 철수의 데이터이고 오른쪽이 민수의 데이터이다.
            가위(0), 바위(1), 보(2) 는 숫자로 표기한다.
            철수와 민수는 계단 가장 밑에서 게임을 시작했으며,
            아래의 규칙을 따른다.
            [규칙]
                이기면 계단 3증가
                비기면 계단 1증가
                지면 계단 3감소
            단, 지더라도 계단은 0미만으로 내려갈 수 없다.
            철수는 게임이 종료 후 몇 번째 계단에 있는지 구하시오.
        [정답]
            졌다! 0
            졌다! 0  
            졌다! 0  
            비겼다! 1
            비겼다! 2
            이겼다! 5
           
            철수의 위치 = 5      
    */

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

    let pos = 0;


    for(let i = 0 ; i < arr.length; i++){
        if(arr[i][0] == arr[i][1]){
            pos+= 1;
            document.write("비겼다!" + pos + "<br>");
           
        }
        else if (arr[i][0] == 0 && arr[i][1] == 2){
            pos+= 3;
            document.write("이겼다!" + pos + "<br>");
           
        }
        else if (arr[i][0] == 1 && arr[i][1] == 0){
            pos+= 3;
            document.write("이겼다!" + pos + "<br>");
           
        }
        else if (arr[i][0] == 2 && arr[i][1] == 1){
            pos+= 3;
            document.write("이겼다!" + pos + "<br>");
           
        }
        else{
            if(pos - 3 >= 0 ){
                pos -= 3;
            }
            document.write("졌다!" + pos + "<br>");
        }
    }
    document.write("철수의 위치 = " + pos);

</script>

 


이차배열2_문제02_가장작은값.html

 

<script>

    /*
        [문제]
            arr배열을 이차원으로 만들고
            랜덤 값(-100~100)을 3개씩 3줄 총 9개를 저장해
            사각형모양으로 출력한다.
            그 중에 가장 작은 값을 출력하시오.
        [예시]
            6,-12,90
            -98,45,18
            34,2,0
       
            가장 작은 값 = -98    
    */
 /*
    let arr = [];
    document.write("[1] arr 배열을 2차원으로 만들기>>> <br>" );
    for(let i = 0; i < 3; i++){
        arr.push([0, 0, 0]);
        document.write(arr[i] + "<br>");
    }

    document.write("[2] 랜덤 값(-100 ~ 100)을 arr 배열에 저장하기>>> <br>");
        let min = 100;
    for(let i = 0 ; i < arr.length; i++){
        for(let j = 0; j< arr[i].length; j++){
            let r = Math.floor(Math.random() * 201) -100;
            arr[i][j] = r;
            if(min > arr[i][j]){
                min = arr[i][j]
            }
        }
        document.write(arr[i] + "<br>");
    }

    document.write("[3]가장 작은 값을 출력>>> <br>");

    document.write(min + "<br>");
   */
 
   


/*
    [문제]
        arr배열을 이차원으로 만들고
        랜덤 값(-100~100)을 3개씩 3줄 총 9개를 저장해
        사각형모양으로 출력한다.
        그 중에 가장 작은 값을 출력하시오.
    [예시]
        6,-12,90
        -98,45,18
        34,2,0
   
        가장 작은 값 = -98    
*/

let arr = [];

let temp = [];

let min = 100;

for(let i = 0; i< 9; i++){
    let r = Math.floor(Math.random() * 201) - 100;

    temp.push(r);
    if(r < min){
        min = r;
    }
    if(i % 3 == 2){
        arr.push(temp);
        temp = [];
    }
}

for(let i = 0; i < arr.length; i++){
    document.write(arr[i] + "<br>");
   
}
document.write("가장 작은 수 = " + min);




</script>

 


이차배열2_문제03_관리비.html

 

<script>

    /*
        [문제]
            apt배열은 아파트 1동의 각 세대를 의미한다.
            pay배열은 이번달 관리비를 뜻한다.    
            아래 문제를 잘 읽고 정답을 구하시오.
    */

    let apt = [
        [101, 102, 103],    
        [201, 202, 203],    
        [301, 302, 303]    
    ];

    let pay = [
        [1000, 2100, 1300],  
        [4100, 2000, 1000],  
        [3000, 1600,  800]  
    ];

    /*
        [문제 1]
            각 층별 관리비 합을 출력하시오.
        [정답 1]
            4400 7100 5400    
    */
    for(let i =0; i < pay.length; i ++){
        let sum = 0;
        for(let j = 0 ; j < pay[i].length ; j++){
            sum += pay[i][j];
        }
        document.write(sum + " ");
    }
    document.write("<br>");
   

    /*
        [문제 2]
            랜덤으로 호수와 관리비 한개 출력하시오.
        [예시 2]
            0 2
            103 1300원    
    */

        let r1 = Math.floor(Math.random() * 3);
        let r2 = Math.floor(Math.random() * 3);
        document.write("<br>호수 = " + apt[r1][r2] + " 관리비 = " + pay[r1][r2] + "<br>")

 
    /*
        [문제 3]
            관리비가 가장 많이 나온 집, 가장 적게 나온 집을 출력하시오.
        [정답 3]
            가장 많이 나온 집 = 201
            가장 적게 나온 집 = 303        
    */

    let min = pay[0][0];
    let min1 = 0;
    let min2 = 0;

    let max = 0;
    let max1 = 0;
    let max2 = 0;
    for(let i = 0; i < pay.length; i++){
        for(let j  = 0 ; j< pay[i].length; j++){
            if(pay[i][j] > max){
                max = pay[i][j];
                max1 = i;
                max2 = j;
            }
            if(pay[i][j] < min){
                min = pay[i][j];
                min1 = i;
                min2 = j;
            }
        }
    }
    document.write("관리비가 가장 많이 나온 집 = " + apt[max1][max2] + "<br>");
    document.write("관리비가 가장 적게 나온 집 = " + apt[min1][min2] + "<br>");

</script>

 


이차배열2_문제04_그래프.html

 

<script>

    /*
        [문제]
            arr배열에 data의 값들만큼 1을 채워 넣으시오.
            단, 가로를 기준으로 왼쪽에서 오른쪽으로 저장하시오.
            결과를 사각형 모양으로 출력하시오.
        [정답]
            [1,1,1,1,1,0,0,0,0,0]
            [1,1,1,0,0,0,0,0,0,0]
            [1,1,1,1,1,1,1,0,0,0]
            [1,1,1,0,0,0,0,0,0,0]
            [1,1,1,1,1,1,1,1,1,0]    
    */

    let data = [5, 3, 7, 3, 9];
    let arr = [
        [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 < arr.length; i++){
        for(let j = 0; j < data[i]; j++){
            arr[i][j] = 1;
        }
        document.write(arr[i] + "<br>");
    }


    document.write("<br>==================================<br>");

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

            if(j < arr[i].length - 1){
                document.write(", ");
            }
        }
        document.write("]<br>")
    }

</script>

 


이차배열2_문제05_그래프거꾸로.html

 

<script>

    /*
        [문제]
            arr배열에 data의 값들만큼 1을 채워 넣으시오.
            단, 가로를 기준으로 오른쪽에서 왼쪽으로 저장하시오.
            결과를 사각형 모양으로 출력하시오.
        [예시]
            data = [5,3,7,3,9]
           
            [0,0,0,0,0,1,1,1,1,1]
            [0,0,0,0,0,0,0,1,1,1]
            [0,0,0,1,1,1,1,1,1,1]
            [0,0,0,0,0,0,0,1,1,1]
            [0,1,1,1,1,1,1,1,1,1]    
    */

    let data = [5, 3, 7, 3, 9];
    let arr = [
        [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 < arr.length; i++){
        for(let j = arr[i].length - 1; j > arr[i].length - data[i] - 1; j--){
            arr[i][j] = 1;
        }
        document.write(arr[i] + "<br>");
    }
    document.write("<br>");

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

</script>

 


이차배열2_문제06_시험점수.html

 

<script>

    /*
        [문제]    
            student배열은 이번 학기 중간고사 성적이다.
            가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
            각각 국어, 수학, 영어 점수이다.
    */

    let student = [
        [1001, 100, 20, 32],         // 152
        [1002,  40, 43, 12],         // 95
        [1003,  60, 21, 42],         // 123
        [1004,  76, 54, 55],         // 185
        [1005,  23, 11, 76]          // 110
    ];

    let rank = [0, 0, 0, 0, 0];

    /*
        [문제1]
            모든 점수의 총합을 출력하시오.
        [정답1]
            665    
    */
    let total = 0;
    for(let i = 0 ; i < student.length; i++){
        for(let j = 1; j<student[i].length; j++){
            total += student[i][j];
        }
    }
    document.write("total = " + total + "<br>");

    /*
        [문제2]
            국어 1등 번호를 출력하시오.
        [정답2]          
            1001    
           
    */
        let kor = 0;
        let korid = 0;
        for(let i = 0 ; i < student.length; i++){
        for(let j = 1; j <= 1; j++){
            if(kor < student[i][j]){
                kor = student[i][j];
                korid = i;
            }
        }
    }
    document.write("국어 1등 = " + student[korid][0]+ "<br>");


    /*
        [문제3]
            수학 1등 번호를 출력하시오.
        [정답3]    
            1004        
    */  
   let math = 0;
   let mathid = 0;
    for(let i = 0; i < student.length; i++){
        for(let j = 2; j <= 2; j++){
            if(math < student[i][j]){
                math = student[i][j];
                mathid = i;
            }
        }
    }
    document.write("수학 1등 = " + student[mathid][0] + "<br>");

    /*
        [문제4]
            영어 1등 번호를 출력하시오.
        [정답4]
            1005    
    */
   let eng = 0;
   let engid = 0;
    for(let i = 0; i < student.length; i++){
        for(let j = 3; j <= 3; j++){
            if(eng < student[i][j]){
                eng = student[i][j];
                engid = i;
            }
        }
    }
    document.write("영어1등 = " + student[engid][0] + "<br>");

    /*
        [문제5]
            전체 1등 번호를 출력하시오.
        [정답5]  
            1004  
    */
        let fir = 0;
        let firid = 0;
        for(let i = 0; i < student.length; i++){
            let sum = 0;
            for(let j = 1; j < student[i].length; j++){
                sum+=student[i][j];
            }
            if(fir < sum){
                fir = sum;
                firid = i;
            }
        }
        document.write("전체 1등 = " + student[firid][0] + "<br>");
   
    /*
        [문제6]
            수학점수가 국어점수 보다 높은 번호를 출력하시오.
        [정답6]
            1002    
    */  
       
        let gdid = 0;
        for(let i = 0 ; i < student.length; i++){
            for(let j = 1; j <= 1; j++){
                if(student[i][j] < student[i][j+1]){
                    gdid = i;
                   
                }
            }
        }
        document.write("수학점수가 국어점수보다 높은 번호 = " + student[gdid][0]+ "<br>");
   
    /*
        [문제7]
            세 과목의 총합의 등수를 rank리스트에 저장하시오.
        [정답7]
            rank = 2,5,3,1,4
    */  let ttotal = 0;
    let temp = [];
        for(let i = 0; i < student.length; i++){
            let sum = 0;
            for(let j = 1; j < student[i].length; j++){
                sum += student[i][j];
            }
            temp.push(sum);
        }

        document.write("일단 랭크에 저장>>> " +temp + "<br>");
     
        for(let i = 0; i < temp.length; i++){
          let count = 0;
            for(let j = 0; j < temp.length; j++){
                if(temp[i] <= temp[j]){
                    count++;
                }
            }
            rank[i] = count;
        }
        document.write("rank = " + rank + "<br>");
</script>

 


이차배열2_문제07_연산자게임.html

 

<script>

    /*
        [문제]
            game배열의 각 가로줄은 한게임을 뜻한다.
            첫 번째 숫자와 두 번째 숫자를 더하거나 빼거나 곱해서
            그 결과를 total에 저장하면 된다.
           
            더하거나 빼거나 곱하는 기준은 각 가로의 마지막 숫자로 판별한다.
            0이면 더하기
            1이면 빼기
            2면 곱하기이다.
           
            위 내용을 한줄씩 내려오면 5번 반복하시오.
        [예시]
            [5,9,0] : 은 5 + 9 이다 total = [14]
            [3,7,1] : 은 3 - 7 이다 total = [14, -4]
            [8,4,2] : 는 8 * 4 이다 total = [14, -4, 32]
            ...
            ...
        [정답]
            [14, -4, 32, 18, -2]    
    */

    let game = [
        [5, 9, 0],
        [3, 7, 1],
        [8, 4, 2],
        [9, 2, 2],
        [4, 6, 1]
    ];

    let total = [];

    for(let i = 0 ; i < game.length; i++){
        document.write(game[i] + " : 은 ");
        for(let j = 2; j < game[i].length; j++){
            if(game[i][j] == 0){
                total.push(game[i][0] + game[i][1]);
                document.write(game[i][0] + " + " + game[i][1] + " 이다 ")
            }
            else if(game[i][j] == 1){
                total.push(game[i][0] - game[i][1]);
                document.write(game[i][0] + " - " + game[i][1] + " 이다 ")
            }
            else{
                total.push(game[i][0] * game[i][1]);
                document.write(game[i][0] + " * " + game[i][1] + " 이다 ")
            }
        } document.write("total = " + total + "<br>");
    }
document.write("<br><br>[정답]<br>[" + total + "]")
</script>

 


이차배열2_문제08_택시게임.html

 

<script>

    /*
        [문제]
            현재 택시는 5, 5 위치에 있다.
            배열의 왼쪽 세로줄은 속도를 뜻한다.
            배열의 오른쪽 세로줄은 방향 뜻하고
            (0, 1, 2, 3)은 (북, 동, 남, 서)를 뜻한다.
            속도와 방향은 택시가 매번 이동한 내용을 기록한 것이다.
            6번 모두 이동한 후 택시의 최종위치를 출력하시오.  
        [예시]
            [4,0]
                속도는 4이고 방향은 0이니 북쪽을 뜻한다.
                y가 4증가해  x : 5, y : 9 가 된다.  
        [정답]  
            x = 8 y = 0    
    */

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

    let x = 5;
    let y = 5;

    for(let i = 0; i < game.length; i++){
        for(let j = 1; j < game[i].length; j++){
            if(game[i][j] == 0){
                y += game[i][0];
            }
            else if(game[i][j] == 1){
                x += game[i][0];
            }
            else if(game[i][j] == 2){
                y -= game[i][0];
            }
            else {
                x -= game[i][0];
            }
        }
    }
    document.write("x = "  + x + " y = " + y);

</script>

 


이차배열2_문제09_가장작은값음수제거.html

 

<script>

    /*
        [문제]
            arr배열을 이차원으로 만들고 랜덤 값(-100~100)을
            3개씩 3줄 총 9개를 만들고 사각형모양 으로 출력한다.
            그 중에 가장 작은 값을 출력하시오.
            단, 음수는 양수로 변경해 비교하시오.
        [예시]
            [68,  44,-13]
            [-77,100,-49]
            [-58,-37,-78]
            가장 작은 값 = -13  
    */

    let arr = [];
    let min = 100;
   
    let temp = [];

    for(let i = 0 ; i < 9; i++){
        let r = Math.floor(Math.random() * 201) - 100;
        temp.push(r);

        if(i % 3 == 2){
            arr.push(temp);
            temp = [];
        }

        if(r < 0){
            r = (r * -1)
        }
       
        if(min > r){
            min = r
           
        }
     
       
    }
for(let i = 0; i < arr.length; i++){
    document.write(arr[i] + "<br>");
   
}
document.write("가장 작은 수 = " + min);
</script>