라라리라

2023.07.29 / Step 4 [반복문] - 코딩 10 일차 본문

코딩/2023 JavaScript Console

2023.07.29 / Step 4 [반복문] - 코딩 10 일차

헤실 2023. 7. 29. 23:22

반복문7_개념01_369게임.html

 

<script>

/*
        [문제]
            1. 1~50까지 반복한다.
            2. 그 안에서 해당 숫자의 369게임의 결과를 출력한다.
            3. 각각의 숫자에 3이나 6이나 9가 두 개면 "짝짝"
            4. 각각의 숫자에 3이나 6이나 9가 한 개면 "짝"
            5. 3이나 6이나 9가 없으면 그냥 숫자를 출력하시오.
           
        [결과]
            1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 ...    
    */

    let a = 1;

    while(a <= 50){
        let x = parseInt(a / 10);
        let y = a % 10;
        let count = 0;

        if(x == 3 || x == 6 || x == 9 ){
            count += 1
        }
        if(y == 3 || y == 6 || y == 9){
            count += 1
        }
        if(count == 2){
            console.log("짝짝");
            document.write("짝짝 ");
        } else if (count == 1){
            console.log("짝");
            document.write("짝 ");
        } else if (count == 0){
            console.log(a);
            document.write(a + " ");
        }
        a += 1;
    }


</script>

 


반복문7_개념02_소수.html

 

<script>

/*
        [문제]
            10~100 사이의 랜덤 숫자를 저장하고, 해당 숫자가 소수인지 아닌지 판별하시오.
            소수란, 1과 자기 자신으로만 나눠지는 수를 의미한다.
            예) 2, 3, 5, 7, 11, 13, ..      

            (1) 해당 숫자를 1부터 자기 자신까지 나눈다.
            (2) 나머지가 0일 때마다 카운트를 센다.
            (3) 그 카운트 값이 2이면 소수이다.
            (4) 6/1 6/2 6/3 6/4 6/5 6/6 ==> count=4 ==> (소수x)
            (5) 2/1 2/2     ==> count=2 ==>(소수)
        [예시]
            53
            소수이다.    
    */

    let num = Math.floor(Math.random() * 91 + 10);

    document.write(num);

    let a = 1;
    count = 0;

    while(a <= num){
        if(num % a == 0){
            count += 1;
        }
        a += 1;
    }
        if(count == 2){
           
           
            console.log("소수이다.")
            document.write("<br>소수이다.")
        } else {
            console.log("소수가 아니다.")
            document.write("<br>소수가 아니다")
        }
</script>

 


반복문7_문제01_369개수.html

 

<script>

    /*
        [문제]
            1. 1~100까지 반복한다.
            2. 각 수에 3이나 6이나 9의 개수를 누적해서 출력하시오.
        [정답]
            3 1
            6 1
            9 1
            13 1
            16 1
            ...
            98 1
            99 2    
    */

    let a = 1;

    while(a <= 100){
        let x = parseInt(a / 10);
        let y = parseInt(a % 10);
        count = 0;

        if(x == 3 || x == 6 || x == 9){
            count += 1;
        }
        if(y == 3 || y == 6 || y == 9){
            count += 1;
        }
        if(count == 2){
            console.log(a + " " + count);
            document.write(a + " " + count + "<br>");
        } else if (count == 1){
            console.log(a + " " + count);
            document.write(a + " " + count + "<br>");
        }
        a += 1;
    }


</script>

 


반복문7_문제02_건물주.html

 

<script>

    /*
        [문제]
            철수는 산전수전 끝에 50층 빌딩의 건물주가 되었다.
            철수는 빌딩의 엘리베이터에서 숫자 4를 전부 제거 했다.
            만약에 실제로 4층을 간다면 숫자 5를 눌러야 한다.
            철수의 빌딩은 지상 1층에서 지상 50층이고,
            실제 층과 엘리베이터에 적혀있는 숫자를 1층부터 순서대로 출력하시오.
        [정답]
            1 1
            2 2
            3 3
            4 5
            5 6
            6 7
            7 8
            8 9
            9 10
            10 11
            11 12
            12 13
            13 15
            14 16
            15 17
            16 18
            17 19
            18 20
            19 21
            20 22
            21 23
            22 25
            23 26
            24 27
            25 28
            26 29
            27 30
            28 31
            29 32
            30 33
            31 35
            32 36
            33 37
            34 38
            35 39
            36 50
            37 51
            38 52
            39 53
            40 55
            41 56
            42 57
            43 58
            44 59
            45 60
            46 61
            47 62
            48 63
            49 65
            50 66    
    */

   
    let a = 1;

    let i = 1;
    while(a <= 50) {
       
        let x = parseInt(i / 10);
        let y = i % 10;
       
        if(x != 4 && y != 4) {
            console.log(a + " " + i);
            document.write(a + " " + i + "<br>");
            a += 1;
        }
       
        i += 1;
    }

   
</script>

 


반복문7_문제03_건물청소.html

 

<script>

    /*
        [문제]
            철수는 50층 빌딩의 소유주이다.
            청소를 위해 청소직원 3명을 고용했다.
            청소는 한 사람당 두 개 층씩 청소하기로 했다.
            예를 들어 직원 1이 [1층 2층] 청소하면, 직원 2는 [3층 4층] ,
                        직원 3은 [5층 6층]을 청소한다.
            다시 직원 1은 [7층 8층], 직원 2는 [9층 10층], 직원 3은 [11층 12층]을 청소한다.
            이런 식으로 50층을 전부 청소한다.
            전부 청소했을때, 직원 2의 청소한 층을 전부 출력하시오.
        [정답]
            3 4 9 10 15 16 21 22 27 28 33 34 39 40 45 46    
    */

     let a = 1;

     while(a <= 50){
        if(a % 6 == 3 || a  % 6 == 4){

                console.log(a);
                document.write(a+"<br>");
        }
        a += 1;
     }
</script>

 


반복문7_문제04_아르바이트.html

 

<script>

    /*
        [문제]
            철수는 편의점에서 아르바이트한다.
            한 달 동안 요일 구분 없이 이틀 연속 출근 후
            하루 휴무 이렇게 반복 근무한다.
            이번 달은 30일까지 있고 1일(월요일)이 출근 첫날이라고 하면,
            이번 달 철수가 출근하는 날짜와 요일을 전부 출력하시오.
        [정답]
            1 월
            2 화
            4 목
            5 금
            7 일
            8 월
            10 수
            11 목
            13 토
            14 일
            16 화
            17 수
            19 금
            20 토
            22 월
            23 화
            25 목
            26 금
            28 일
            29 월    
    */

    let a = 1;
    let count = 0;
    let 요일 = ""

    while(a <= 30){
       let 노가다 = a % 7;
        if(a % 3 != 0){
            if(노가다 == 1){
                요일 = "월"
            }
            else if(노가다 == 2){
                요일 = "화"
            }
            else if(노가다 == 3){
                요일 = "수"
            }
            else if(노가다 == 4){
                요일 = "목"
            }
            else if(노가다 == 5){
                요일 = "금"
            }
            else if(노가다 == 6){
                요일 = "토"
            }
            else if(노가다 == 0){
                요일 = "일"
            }
            console.log(a + " " + 요일)
            document.write(a + " " + 요일 + "<br>");

        }
        a += 1;
    }

</script>

 


반복문7_문제05_약수3개.html

 

 

<script>

    /*
        [문제]
            어떤 수를 1부터 자기 숫자까지 나눠서 나눠지는 수를 약수라고 한다.
            랜덤으로 1~100을 저장 후,
            약수가 3개이면 "정답"을
            아니면 "오답"을 출력하시오.    
    */

    let num = Math.floor(Math.random() * 100 + 1);

    console.log(num);
    document.write(num + "<br>");

    let a = 1
    let count = 0;

    while(a <= num){
        if(num % a == 0){
            count += 1;
        }
        a += 1;
    }
    if(count == 3){
        console.log("정답");
        document.write("정답!<br>");
    } else {
        console.log("오답");
        document.write("오답!<br>");
    }

</script>

 


반복문7_문제06_주6일.html

 

<script>

    /*
        [문제]
            철수는 무인도를 사들여 국왕이 되었다.
            철수는 평소 월요일을 싫어해서 주 7일을 주 6일로 바꾸고
                        월요일을 삭제했다.
            5월 1일이 일요일이면,
            5월 1일부터 5월31일까지 날짜와 요일을 전부 출력해보자.
        [정답]
            1 일
            2 화
            3 수
            4 목
            5 금
         
    */

    let a = 1;
    let 요일 = ""

    while(a <= 31){
        let 육일 = a % 6
        if(육일 == 1){
            요일 = "일"
        } else if(육일 == 2){
            요일 = "화"
        } else if(육일 == 3){
            요일 = "수"
        } else if(육일 == 4){
            요일 = "목"
        } else if(육일 == 5){
            요일 = "금"
        } else if(육일 == 0){
            요일 = "토"
        }
        console.log(a + " " + 요일);
        document.write(a + " " + 요일 + "<br>");

        a += 1;
    }

</script>

 


반복문8_개념01_반복규칙찾기.html

 

<script>

  /*
        반복문을 사용해서 아래와 같이 출력해보세요.
        [예시]
            0 1 2
            1 2 3
            2 3 4
            3 4 5
            4 5 6
    */

    let a = 0;
   
    while(a <= 4){
        console.log(a + " " + (a + 1) + " " +  (a + 2));
        document.write(a + " " + (a + 1) + " " + (a + 2) + "<br>");
        a += 1;
    }

    let x = 0
    let y = 1
    let z = 2

    while(x <= 4){
        console.log(x + " " + y + " " + z);
        document.write(x + " " + y + " " + z +"<br>");
        x += 1;
        y += 1;
        z += 1;
    }


</script>

 


반복문8_문제01_반복규칙찾기1.html

 

<script>

let a = 0
let b = 0
let c = 1

while(a <= 4){
    console.log(a + " " + b + " " + c);
    document.write(a + " " + b + " " + c +"<br>");

    a += 1;
    b += 2;
    c += 2;
}

</script>

 


반복문8_문제02_반복규칙찾기2.html

 

<script>

    /*
        [문제]
            반복문을 사용해서 아래와 같이 출력해보세요.
        [예시]
            0 0
            1 1
            2 3
            3 6
            4 10
            5 15
            6 21    
    */

    let a = 0
    let b = 0

    while(a <= 6){
        console.log(a + " " + b);
        document.write(a + " " + b + "<br>")

        a += 1;
        b += a;
    }

</script>

 


반복문8_문제03_반복규칙찾기3.html

 

<script>

    /*
        [문제]
            반복문을 사용해서 아래와 같이 출력해보세요.
        [예시]
            0 30
            1 29
            2 27
            3 24
            4 20
            5 15
            6 9
            7 2
            8 -6
            9 -15  
    */

    let a = 0
    let b = 30

    while(a <= 9){
        console.log(a + " " + b);
        document.write(a + " " + b + "<br>");

        a += 1;
        b -= a;
    }

</script>

 


반복문8_문제04_반복규칙찾기4.html

 

<script>

    /*
        [문제]
            반복문을 10회 반복해서 아래와 같이 출력하시오.
        [예시]
            0 0
            1 0
            2 1
            3 1
            4 2
            5 2
            6 3
            7 3
            8 4
            9 4    
    */
   let a = 0
   let b = 0

   while(a <= 9){
    console.log(a + " " + b);
    document.write(a + " " + b + "<br>");
   
    a += 1;
    b = parseInt(a / 2);
   }

</script>

 


반복문8_문제05_반복규칙찾기5.html

 

<script>

    /*
        [문제]
            반복문을 10회 반복해서 아래와 같이 출력하시오.
           
        [예시]
            0 1
            1 2
            2 3
            3 1
            4 2
            5 3
            6 1
            7 2
            8 3
            9 1    
    */

    let a = 0;
    let b = 0;

    while(a <= 9){
       
        b= a % 3 + 1;


        console.log(a + " " + b);
        document.write(a + " " + b + "<br>");

       
        a += 1;
       
       
    }

</script>

 


반복문8_문제06_반복규칙찾기6.html

 

<script>

    /*
        [문제]
            반복문을 10회 반복해서 아래와 같이 출력하시오.
           
        [예시]
            0 1
            1 2
            2 2
            3 3
            4 3
            5 3
            6 4
            7 4
            8 4
            9 4    
    */

    let a = 0;
    let b = 1;

    let count = 0;

    while(a <= 9){
        console.log(a + " " + b);
        document.write(a + " " + b + "<br>");
        count += 1;

        if(b == count){
            b += 1;
            count = 0;
        }
        a += 1;
    }
</script>

 


반복문9_개념01_자리수.html

 

<script>

 /*
        [문제]
            1 ~ 2000 사이의 랜덤숫자를 저장하고,
            자리수가 얼마인지 출력하시오.
        [예시]
            969
            3자리 수    
    */

    let num = Math.floor(Math.random() * 2000 + 1);

    console.log(num);
    document.write(num+"<br>");

    if(parseInt(num / 1000) > 0){
        console.log("4자리 수");
        document.write("4자리 수<br>");
    } else if (parseInt(num % 1000 / 100) > 0){
        console.log("3자리 수");
        document.write("3자리 수<br>");
    } else if (parseInt(num % 100 / 10) > 0){
        console.log("2자리 수");
        document.write("2자리 수<br>");
    } else if (num % 10 > 0){
        console.log("1자리 수");
        document.write("1자리 수<br>");
    }

    let count = 0;
    while(true){

        num = parseInt(num /10);
        count += 1;

        if(num == 0){
            break;
        }
    }
    console.log( count + "자리 수");
    document.write(count + "자리 수")
</script>

 


반복문9_개념02_최대값개수.html

 

<script>

/*
        [문제]
            랜덤으로 1~10을 10번 출력하고, 가장 큰 수를 출력하시오.
            단, 가장 큰 수가 여러 번 나오는 경우
            중복 출력된 횟수도 함께 출력하시오.
        [예시]
            3 5 2 7 10 7 8 7 6 10
            가장 큰 수 = 10
            반복 횟수 = 2    
    */
    let maxnum = 0;
    let count = 0;
    let a = 0;


    while(a <= 10){
    let num = Math.floor(Math.random() * 10 + 1);
    console.log(num );
    document.write(num + " ");
    if(maxnum < num){
        maxnum = num;
        count = 1;
    } else if (
        maxnum == num){
            count += 1;
        }
        a += 1;

    }
    console.log(maxnum);
    document.write("<br>" + maxnum + "<br>" + count);

</script>

 


반복문9_개념03_랜덤더하기.html

 

<script>

 /*
        [문제]
            2~5 사이의 숫자를 랜덤으로 저장하고,
            랜덤 숫자의 개수만큼 숫자를 더하는 문제와 답을 만들어 출력하시오.
            단, 더하기 할 숫자들은 1~9사이의 랜덤 숫자이어야 한다.
            아래 [출력] 뒤에 나오는 모양과 똑같은 모양으로 출력한다.
            (단, 숫자는 랜덤이므로 숫자는 다르게 나올 수 있다.)
               
        [예시1]              
            랜덤 ==> 3
            [출력] 5 + 3 + 2 = 10
           
        [예시2]
            랜덤 ==> 5
            [출력] 6 + 5 + 2 + 7 + 8 = 28    
    */

    let num = Math.floor(Math.random() * 4 + 2);

    console.log(num);
    document.write("랜덤 ==> " + num + "<br>");

    let a = 1;
    let s1 = 0;
    while(a <= num){
        let z = Math.floor(Math.random() * 9 + 1);
       
        console.log(z);
        document.write(z);

        if(a <= num - 1){
            document.write(" + ")
        }
        s1 += z;

        a += 1;
    }
    console.log(s1);
    document.write(" = " + s1);
   

</script>

 


반복문9_개념04_즉석복권.html

 

<script>

/*
        [문제]
            랜덤으로 1 또는 7을 10번 출력한다.
            7이 연속으로 3번 이상이면 "당첨" 아니면 "꽝"을 출력하시오.
        [예시]
            1 1 1 7 7 7 1 1 7 7
            당첨

            7 1 1 1 1 7 1 1 7 1
            꽝    
    */

   

    let a = 1;
    let count = 0;
    let count2 = 0;
    let x = false;
    while(a <= 10){
        let num = Math.floor(Math.random() * 2)
    if(num == 0){
        num = 1
        console.log(num);
        document.write(num + " ");
        count += 1;
        count2 = 0;
    } else {
        num = 7
        console.log(num);
        document.write(num + " ");
        count2 += 1;
        count = 0;
    }
    if(count2 == 3){
        x = true;
    }
   
    a += 1;
    }
    if(x == true){
    console.log("당첨");
        document.write("<br>당첨!")
}
</script>

 


반복문9_개념04_즉석복권연습.html

 

<script>

     /*
        [문제]
            랜덤으로 1 또는 7을 10번 출력한다.
            7이 연속으로 3번 이상이면 "당첨" 아니면 "꽝"을 출력하시오.
        [예시]
            1 1 1 7 7 7 1 1 7 7
            당첨

            7 1 1 1 1 7 1 1 7 1
            꽝    
    */


   let a = 1;
   let count = 0;
   let 결과 = false;

   while(a <= 10){
    let num = Math.floor(Math.random() * 2);
        if(num == 0){
            num = 7
        } if( num == 7){
            count += 1;
           
            if(count >= 3){
            결과 = true;
        }
        }  else {
            count = 0 ;
        }
        console.log(num);
        document.write(num + " ");
        a += 1;
   }
   document.write("<br>")
   
   if(결과 == true){
   console.log("당첨!");
   document.write("당첨!");
   }
</script>

 


반복문9_문제01_자리수개수.html

 

<script>

    /*
        [문제]
            10000~99999 사이의 랜덤숫자를 저장하고
            자리별숫자가 5 이상인 개수를 출력하시오.
           
                예) 19200 ==> 9 하나만 5 이상 ==> 1
                예) 98436 ==> 9,8,6, 세 개가 5 이상 ==> 3    
    */

    let num = Math.floor(Math.random() * 80000 + 10000);
    console.log(num);
    document.write(num+"<br>");
    count = 0;
    if(parseInt(num / 10000) >= 5){
        count += 1;
    } if (parseInt(num % 10000 / 1000 ) >= 5){
        count += 1;
    } if (parseInt(num % 1000 / 100) >= 5){
        count += 1;
    } if (parseInt(num % 100 / 10) >= 5){
        count += 1;
    } if (parseInt(num % 10) >= 5){
        count += 1;
    }
    console.log(count);
    document.write(count);

</script>

 


반복문9_문제01_자리수개수2.html

 

<script>

    /*
        [문제]
            10000~99999 사이의 랜덤숫자를 저장하고
            자리별숫자가 5 이상인 개수를 출력하시오.
           
                예) 19200 ==> 9 하나만 5 이상 ==> 1
                예) 98436 ==> 9,8,6, 세 개가 5 이상 ==> 3    
    */

    let num = Math.floor(Math.random() * 90000 + 10000);
    console.log(num)

    let count = 0;
    let temp = num;

    while(true){
        let unit = temp % 10;
        if(unit >= 5){
            count += 1;
        }
        temp = parseInt(temp / 10);
        if(temp == 0){
            break;
        }
    }

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

</script>

 


반복문9_문제02_왼발오른발.html

 

<script>

    /*
            [문제]
                철수는 30개짜리 계단의 최상단에 서 있다.
                제일 아래까지 내려가려고 한다.
                철수가 내려갈 때 왼발로 밟은 계단을 출력하시오.
                아래 조건들을 참고하시오.
               
                [조건]
                [1] 철수는 무조건 한 계단씩 내려간다.
                [2] 철수는 첫발은 왼쪽 다리부터 계단을 내려간다.
                [3] 출력을 다섯 번 할 때마다 반대편 다리로 바꿔서 출력하시오.
               
            [정답]
                30 28 26 24 22
                21 19 17 15 13
                12 10 8 6 4
                3 1
      */

    let turn = true;
    let count = 0;
    let print =true;

    let a = 30;

    while(a >= 1){
        a -= 1;
        if(turn){
            if(print){
                document.write(a + " ");
                count += 1;
            }
        } else {
            if(print == false){
                document.write(a + " ");
                count += 1;
            }
        }
           
            turn = !turn;

            if(count % 5 == 0){
                document.write("<br>");
                print = !print;

            }
       
    }


    </script>

 


반복문9_문제03_랜덤더하기빼기.html

 

<script>

    /*
        [문제]
            숫자 5개를 랜덤으로 뽑고,
            랜덤으로 더하기나 빼기를 한 총합을 구하려고 한다.
   
            변수 r 은 숫자를 표현하며, 변수 op는 기호를 표현한다.
            변수 r 에 랜덤숫자(1~9)를 5개를 뽑는다.
            또 op변수는 더하기나 빼기를 뜻하는 랜덤숫자(0, 1)도 4개를 뽑는다.
            (기호는 숫자보다 1개 적어야 한다.)
            op 변수의 0은 더하기고 1은 빼기이다.
           
        [예시]
            r 은 3, 6, 5, 3 , 1이 나왔다고 가정하고,
            op 는 0, 1, 0, 1이 나왔다고 하면,
   
            3 + 6 - 5 + 3 - 1 이된다.    
    */

    let x = Math.floor(Math.random() * 9 + 1);
    let a = 1;
    let total = x;

    while(a <= 5){
        document.write(x);
        let op = Math.floor(Math.random() * 2);
        x = Math.floor(Math.random() * 9 + 1);

        if(a <= 4){
            let y = " "
            if(op == 0){
                y = " + "
                total += x;
            } else if(op == 1){
                y = " - "
                total -= x;
            }
            document.write(y);
        }
        a += 1;
    }
    document.write(" = " + total);


</script>

 


반복문9_문제04_한번에두계단.html

 

<script>

    /*
        [문제]
            계단이 50 계단이 있다. 철수는 제일 위 계단에 서 있다.
            철수는 한 번에 두 계단씩 내려간다.
            철수가 왼발로 디딘 계단을 출력하시오.
            아래 조건을 참고하시오.
            [1] 철수는 한 번에 두 계단씩 내려간다.
            [2] 철수는 왼발부터 내려간다.
            [3] 5번 출력할 때마다 다른 발을 출력하시오.
           
            48 44 40 36 32
            30 26 22 18 14
            12 8  4  0  
    */

    let turn = true;
    let print = true;
    let count = 0;

    let a = 50;

    while(a >= 1){
        a -= 2;
       
        if(turn){
            if(print){
                document.write(a + " ");
                count += 1;
            }
        } else {
            if(print == false){
                document.write(a + " ");
                count += 1;
            }
        }
       
        turn = !turn;

        if(count % 5 == 0){
            document.write("<br>")
            print = !print
        }
    }


</script>

 


반복문9_문제05_택시게임.html

 

<script>

    /*
        [문제]
            철수의 위치는 y = 0 , x = 0 이다.
            랜덤 숫자(1~4)를 5번 뽑는다.
            랜덤 숫자는 방향을 뜻한다.
            1은 북쪽 2는 동쪽 3은 남쪽 4는 서쪽을 뜻한다.
   
            방향만큼 1씩 이동하며,
            5번 이동 후 철수의 위치를 출력하시오.
   
            [예시] 랜덤으로 1 4 3 2 1 이 나왔다고 했을 때
            1은 북이므로 y += 1
            4는 서이므로 x -= 1
            3은 남이므로 y -= 1
            2는 동이므로 x += 1
            1은 북이므로 y += 1    
    */

    let y = 0;
    let x = 0;

    let total = 0;

    let a = 1;
    while(a <= 5){
      let num = Math.floor(Math.random() * 4 + 1);

      document.write(num + " ")

      if(num == 1){
        y += 1;
      } else if (num == 2){
        x += 1;
      } else if (num == 3){
        y -= 1;
      } else if (num ==4){
        x -= 1;
      }
        a += 1;
    }
    document.write("<br>" + " x = " + x + " y = " + y);


</script>

 


반복문9_문제06_통계.html

 

<script>

    /*
        [문제]
            1. 10회 반복을 한다.
            2. 0~100 사이의 랜덤 숫자를 출력한다. (학생 점수)
            3. 번호는 1번부터 시작한다. 번호와 점수를 출력한다.
            4. 성적이 60점 이상이면 합격생이다.
            합격생은 점수 옆에 [합격]을 불합격생은 [불합격]을 출력한다.
            5. 전교생(10명)의 총점과 평균을 출력한다.
            6. 1등의 번호와 점수를 출력한다.    
        [예시]
            1번. 52점 [불합격]
            2번. 34점 [불합격]
            3번. 96점 [합격]
            4번. 95점 [합격]
            5번. 92점 [합격]
            6번. 31점 [불합격]
            7번. 85점 [합격]
            8번. 49점 [불합격]
            9번. 38점 [불합격]
            10번. 59점 [불합격]
            평균점수 = 63.1
            1등학생 = 3번(96점)
    */
    let a = 1;
    let count = 0;
    let sum = 0;
    let maxscore = 0;
    let b = 0;

    while(a <= 10){
        document.write(a + "번 ");
        let score = Math.floor(Math.random() * 101);
        document.write(score + " ");
       
       
        if(score >= 60){
            document.write("[합격]<br>");
        } else {
            document.write("[불합격]<br>");
        }
        sum += score;
        if(maxscore < score){
            maxscore = score;
            b = a;
        }
       
        a += 1;

    }
        document.write("<br>");
        let avg = (sum / 10).toFixed(1);
        document.write("평균점수 = " + avg + "<br>");
        document.write("1등학생 = " + b +"번 " +"(" + maxscore + "점)");
</script>

 


반복문10_개념01_랜덤업다운.html

 

<script>
/*
        [문제]
            com은 1~100 사이의 숫자를 한 개 저장한다.
            me는 com의 숫자를 모른다고 가정하고, 1~100 사이의 숫자를 제시한다.
            com과 me를 비교해서 "크다", "작다", "같다"를 출력하시오.

            com은 딱 한 번만 숫자를 정하고,
            me는 com의 숫자를 맞출 때까지 계속 숫자를 랜덤으로 뽑는다.
            숫자를 맞추면 게임은 종료된다.    
    */

    let com = Math.floor(Math.random() * 100 + 1);
    document.write("com = " + com + "<br>");
   

    while(true){
        let me = Math.floor(Math.random() * 100 + 1);
            document.write("me = " + me );

        if (com > me){
            document.write("작다<br>")
        } else if (com < me){
            document.write("크다<br>");
        } else if (com == me){
            document.write("같다<br>");
            break;
        }
    }

</script>

 


반복문10_개념02_합10.html

 

<script>

/*
        [문제]
            1~9 사이의 랜덤 숫자 2개를 저장하고
            그 숫자의 합이 무조건 10이 되도록 출력하시오.
        [예시]
            x = 9
            y = 1    
    */

   

    while(true){
        let a = Math.floor(Math.random() * 9 + 1);
        let b = Math.floor(Math.random() * 9 + 1);
        if(a + b == 10){
            document.write("a = " + a + "<br>b = " + b);
            break;
        }
    }


</script>

 


반복문10_문제01_전부홀수.html

 

<script>

    /*
        [문제]
            1 ~ 9 사이의 랜덤 값을 4개 출력한다.
            랜덤 값이 모두 홀수이면 "당첨"을 출력,
            하나라도 홀수가 아니면 "꽝" 출력한다.
           
            [예시]
                3 1 5 1 : "당첨"
                5 2 1 4 : "꽝"    
    */

    let a = 1;
    let count = 0;

    while(a <= 4){
        let num = Math.floor(Math.random() * 9 + 1);
        document.write(num + " ");
        if(num % 2 == 1){
            count += 1;
        } else {
           count = 0;
        }
        a += 1;
    }
    if(count == 4){
        document.write(": 당첨이요~");
    } else {
        document.write(": 꽝!");
    }
</script>

 

 


반복문10_문제02_가위바위보.html

 

<script>

    /*
        [문제]
            철수와 민수는 계단에서 가위바위보를 한다.        
            철수와 민수는 각각 0 ~ 2 의 랜덤 값을 저장한다.
            0 : 가위 , 1 : 바위 , 2 : 보를 뜻한다.    
            철수와 민수는 50번째 계단의 위치에서 시작한다.
            룰은 다음과 같다.  
            이기면 3칸 올라가기, 비기면 2칸 올라가기, 지면 1칸 내려가기.      
            둘 중 아무나 100 이상 도착하거나
            둘 사이의 간격이 10 이상이면 게임은 종료된다.
            게임이 종료될 때까지 두 사람의 이동 경로를 출력하시오.    
    */


    let 철수 = 50;
    let 민수 = 50;
    let a = 50;

    while(true){
        let rs1 = Math.floor(Math.random() * 3);
        let rs2 = Math.floor(Math.random() * 3);

        console.log(rs1 + " " + rs2);

        if(rs1 == rs2){
            철수 += 2;
            민수 += 2;
            document.write("비겼다. <br>");
        }
        else if(rs1 == 0 && rs2 == 2 || rs1 == 1 && rs2 == 0 || rs1 == 2 && rs2 == 1){
            철수 += 3;
            민수 -= 1;
            document.write("철수가 이겼다. <br>");
        } else {
            민수 += 3;
            철수 -= 1;
            document.write("민수가 이겼다. <br>");
        }

        document.write(" 철수 : " + 철수 + " 민수 : " + 민수 + "<br><br>" );
        if(철수 >= 100 || 민수 >= 100){
           
            break;
        } else if(철수 - 민수 >= 10 || 민수 - 철수 >= 10){
            break;
        }

    }

</script>

 


반복문10_문제03_무궁화꽃.html

 

<script>

    /*
        [문제]
            철수는 오징어게임에 참가하였다.
            첫 번째 게임은 "무궁화꽃이 피었습니다" 이다.
            규칙은 아래와 같다.
            [규칙]    
                [1] 전체 거리는 0 ~ 25까지 거리가 있다.
                [2] 철수는 현재 0의 자리에 있다.
                [3] 철수는 매 턴 1 ~ 4의 랜덤숫자를 뽑는다. 숫자만큼 이동한다.
                [4] 이동 거리를 누적하며, 합이 25 이상이 되면 승리이며 종료한다.
                [5] 인형은 매턴 3 ~ 5의 랜덤숫자를 뽑는다.
                [6] 인형보다 큰 숫자가 나오면 움직인 것으로 간주되어 패배하며 종료한다.
                [7] 10턴 안에 도착 못 하면 시간초과로 패배하며 종료한다.
                [8] 철수의 이동 경로를 전부 출력하시오.    
    */

        let a = 1
        let 철수 = 0;
        let count = 0;
        let total = 0;

        while(true){
            let ch = Math.floor(Math.random() * 4 + 1);
            let In = Math.floor(Math.random * 3 + 3);

            console.log(ch + " " + In + "<br>");
            if(a > 10){
                document.write("<br>시간 초과!")
                break;
            }
            if(ch > In){
            document.write("<br>움직였다!")
            break;
            }
            total += ch
            document.write("턴: " + a + " 철수 = " + total + "<br>");

            if(total >= 25){
                document.write("<br>철수 승리!")
                break;
            }
           
         


            a += 1
        }
 
</script>

 


반복문10_문제04_랜덤업다운ai게임.html

 

<script>

    /*
        [문제]
            아래식은 랜덤 업다운 게임 식이다.
            com 이 랜덤으로 숫자를 저장하면
            me가 com의 숫자를 맞출 때까지 반복하는 것이다.
            하지만 me는 그저 랜덤으로 아무 숫자나 막 뽑는다. 그 부분을 해결한다.
            예를 들어 com이 50이고 me가 30을 뽑았으면
            그 이후는 1~30 사이는 뽑지 않게 아래식을 수정하시오.
            마찬지로 com이 50인데 me가 80을 뽑았다면
            그 이후는 80~100은 뽑지 않게 바꾸면 된다.    
    */

    let com = Math.floor(Math.random() * 100 + 1);

    document.write("com : " + com + "<br><br>");

    let min = 1;
    let max = 100;
    let plus = 1;
   
    while(true){

        let me = Math.floor(Math.random() * (max - min + 1)) + plus;
        document.write("me = : " + me + "<br>");

        if(com < me){
            max = me - 1;
            document.write("크다");
        } else if(com > me){
            min = me + 1;
            plus = me + 1;
            document.write("작다");
        } else {
            document.write("같다");
            break;
        }
        document.write("<br><br>");

    }




</script>

 


반복문10_문제05_합20.html

 

 

<script>

    /*
        [문제]
            1~10 사이의 랜덤 숫자 3개 저장하고
            그 숫자의 합이 무조건 20이 되도록 출력해보자.    
        [예시]
            x = 9, y = 5, z = 6
    */
    while(true){
   
    let x = Math.floor(Math.random() * 10 + 1);
    let y = Math.floor(Math.random() * 10 + 1);
    let z = Math.floor(Math.random() * 10 + 1);

    if(x + y + z == 20){
        document.write(" x = : " + x + "<br>y = : " + y + "<br>z = : " + z);
        break;
    }  


    }
</script>

 


반복문10_문제06_철수의마블.html

 

<script>

    /*
        [문제]
            철수는 마블 게임을 하고 있다.  
            0~20까지의 지점이 있고 철수는 0의 위치에 있다.
            20이 넘어가면 게임 종료이다.
            주사위는 1~6사이의 숫자가 나온다.
            철수는 주사위 숫자만큼 이동한다.  
            3의 배수의 자리는 함정이다.(3,6,9,12,15,18)
            함정에서는 한번 더 주사위를 던지고 4이상의 숫자가 나오면
            함정탈출이 되며 한 칸 앞으로 나간다.
            함정에 실패하면 뒤로 한 칸 물러나게 된다.    
            철수가 게임을 끝날 때까지 철수의 이동 경로를 전부 출력하시오.        
    */

    let 철수 = 0;
    let 철수위치 = 0;

    while(true){
        let dice = Math.floor(Math.random() * 6 + 1);
        document.write("주사위 = " + dice + "<br>");
       
        철수위치 = 철수위치 + dice;

        if(철수위치 % 3 == 0){
            dice = Math.floor(Math.random() * 6 + 1);
            document.write("함정에 빠졌다 !!! <br>")
            if(dice >= 4){
                철수위치 = 철수위치 + 1;
                document.write(" 탈출성공<br>")

            } else {
                철수위치 = 철수위치 - 1;
                document.write(" 탈출실패<br>")
            }
        }
            document.write("철수위치 = " + 철수위치 +"<br>");

        if(철수위치 >= 20){
            document.write("<br>철수 승리!");
            break;

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

       
    }

</script>

 


반복문10_문제07_랜덤홀수더하기.html

 

<script>

    /*
        [문제]
            랜덤으로 2~5 를 저장하고,
            랜덤숫자의 개수만큼 숫자를 더하는 문제와 답을 만들어 출력하시오.
            단, 더하기 할 숫자들은 1~9사이의 홀수인 랜덤숫자여야 한다.
           
            아래 [출력] 뒤에 나오는 모양과 똑같은 모양으로 출력한다.
            (단, 숫자는 랜덤이므로 숫자는 다르게 나올 수 있다.)
               
        [예시1]              
            랜덤 ==> 3
            [출력] 5 + 3 + 1 = 9
           
        [예시2]
            랜덤 ==> 5
            [출력] 1 + 5 + 3 + 7 + 1 = 17    
    */
    let count = 0;
    let sum = 0;
    let a = Math.floor(Math.random() * 4 + 2);
        document.write("랜덤 ==>" + a +"<br>");
        document.write("[출력] ")
    while(true){
        let num = Math.floor(Math.random() * 9 + 1);
        count += 1
        sum += num;
        if(count <= a){
           
            document.write(num + " ")
            if(count <= a - 1){
                document.write(" + ")
            }

        }
        if(count == a){
            document.write("= " + sum);
            break;
        }



    }
</script>

 


반복문11_개념01_break.html

 

<script>

 /*
        [반복문 옵션 break]
            반복문 안에서 즉시 종료하고 싶을 때 사용한다.
            기존엔 변수를 사용해서 제어했는데, break를 사용하면 쉽게 종료 가능하다.
            break를 사용하면 쉽게 반복문 제어가 가능하나, 꼭 사용하지 않아도 된다.
       
    */
    /*
        [문제]
            무한반복문안에서 랜덤(1~10) 숫자 하나를 저장한다.
            숫자가 5가 나오면 반복문을 종료한다.    
    */

    while(true){
        let a = Math.floor(Math.random() * 10 + 1);

        document.write(a + " ")

        if(a == 5){
            document.write("종료")
            break;
        }
    }

</script>

 


반복문11_개념02_continue.html

 

<script>
 /*
        [반복문 옵션 continue]
            반복문은 내부의 모든 식을 실행하고 다시 조건으로 올라가서,
            조건이 사실이면 또 반복하는 방법으로 사용된다.
            continue는 반복문의 내부식을 실행하는 도중에 조건으로 바로 올라갈 때 사용한다.
            break와 마찬가지로 continue도 옵션이기 때문에
            사용하지않고도 식을 작성하는데 크게 문제없다.    
    */

    /*
        [문제]
            무한반복문안에서 랜덤(1~10) 숫자 하나를 저장한다.
            숫자가 5이하이면 출력하고, 5초과이면 출력하지 않는다.
            총 숫자가 10개 출력되면 종료한다.    
    */


    let count = 0;
   
    while(true){
        let num = Math.floor(Math.random() * 10 + 1);
       
        if(num > 5){
            continue;
        }
        if(num <= 5){
            document.write(num + " ")
            count += 1;
        }
       
        if(count == 10){
            break;

        }
    }

</script>

 


반복문11_개념03_continue와else.html

 

<script>

/*
        [반복문 옵션 continue]
            else를 이용해서 충분히 식을 만들 수 있기 때문에
            continue는 사용안해도 된다.
    */

    while(true){

        let a = Math.floor(Math.random() * 7);

        document.write(a + "번을 선택하셨습니다.<br>")
       
        if(a == 0){
            break;
        }
        if( a != 1 && a != 2 && a != 3){
            document.write("잘못된 입력입니다.<br>")
            document.write("=============================<br>")
        } else {
            if(a == 1){
                document.write("햄버거<br>")
                document.write("=============================<br>")
            }
            else if(a == 2){
                document.write("콜라<br>");
                document.write("=============================<br>")
            }
            else if(a == 3){
                document.write("감자<br>");
                document.write("=============================<br>")
            }
        }
    }




</script>

 


반복문11_개념04_for.html

 

<script>

 /*
        [반복문 for]
            기존의 반복문 while 은 초기식, 조건식, 증감식 총 3가지 단계로 이루어져있다.
            for 를 사용하면 세가지 단계를 한줄로 표현할수있다.
        [사용법]
            for(초기식;조건식;증감식) {}  
    */

    /*
        [문제]
            1~10까지 반복하면서 출력하시오.    
    */

    // while

    let a = 1;

    while(a <= 10){
        document.write(a + " ");

        a += 1;

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


    // for

    for(b = 1; b <= 10; b += 1){
        document.write(b + " ");
    }

</script>

 


반복문11_개념05_for주의점.html

 

<script>

/*
        [for 주의점]
            아래와 같은문제는 반복횟수가 정해져있지않고, 특정결과가 나와야 종료가 된다.
            그럴때는 for문을 사용할수 없고 while을 사용해야한다.
            for 는 반복횟수가 정해진 문제에서만 사용할 수 있다.    
    */

    /*
        아래와 같이 반복횟수가 정해지지 않으면 while을 사용한다.
        [문제]
            무한반복문안에서 랜덤(1~10) 숫자 하나를 저장한다.
            숫자가 5이하이면 출력하고, 5초과이면 출력하지않는다.
            총 숫자가 10개 출력되면 종료한다.    
    */

    let count = 0;

    while(true){
        let a = Math.floor(Math.random() * 10 + 1);

        if(a <= 5){
            document.write(a + " ");
            count += 1
        }
        if(count == 10){
            break;
        }
    }

     /*
        아래와 같이 반복횟수가 정해지면 for가 적합하다.
        [문제]
            반복문을 사용해서 아래와 같이 출력해보세요.
        [예시]
            0 1 2
            1 2 3
            2 3 4
            3 4 5
            4 5 6    
    */
    document.write("<br>")
    let x = 0
    let y = 1
    let z = 2

    for(let ct = 0; ct <= 4; ct += 1){
        document.write(x + " " + y + " " + z + "<br>");
        x += 1;
        y += 1;
        z += 1;
    }

</script>

 


반복문11_개념06_무궁화꽃.html

 

<script>

    /*
        [문제]
            철수는 오징어게임에 참가하였다.
            첫 번째 게임은 "무궁화꽃이 피었습니다" 이다.
            규칙은 아래와 같다.
            [규칙]    
                [1] 전체 거리는 0 ~ 25까지 거리가 있다.
                [2] 철수는 현재 0의 자리에 있다.
                [3] 철수는 매 턴 1 ~ 4의 랜덤숫자를 뽑는다. 숫자만큼 이동한다.
                [4] 이동 거리를 누적하며, 합이 25 이상이 되면 승리이며 종료한다.
                [5] 인형은 매턴 3 ~ 5의 랜덤숫자를 뽑는다.
                [6] 인형보다 큰 숫자가 나오면 움직인 것으로 간주되어 패배하며 종료한다.
                [7] 10턴 안에 도착 못 하면 시간초과로 패배하며 종료한다.
                [8] 철수의 이동 경로를 전부 출력하시오.    
    */

    let 철수위치 = 0;

    for(a = 1; a <= 15; a += 1){
        let 철수 = Math.floor(Math.random() * 4 + 1);
        철수위치 += 철수;
        document.write("철수 = " + 철수 + "철수위치= " + 철수위치 +"<br>");
        let 인형 = Math.floor(Math.random() * 3 + 3);
        document.write("인형" + 인형 + "<br>");
        if(철수 > 인형){
            document.write("철수가 움직여서 패배했다!")
            break;}
        if (철수위치 >= 25){
            document.write("철수 승리!")
            break;
        }
        if(a > 10){
            document.write("시간초과....")
            break;
        }
   
       
    }
</script>

 


반복문11_개념07_랜덤홀수더하기.html

 

<script>

    /*
        [문제]
            랜덤으로 2~5 를 저장하고,
            랜덤숫자의 개수만큼 숫자를 더하는 문제와 답을 만들어 출력하시오.
            단, 더하기 할 숫자들은 1~9사이의 홀수인 랜덤숫자여야 한다.
           
            아래 [출력] 뒤에 나오는 모양과 똑같은 모양으로 출력한다.
            (단, 숫자는 랜덤이므로 숫자는 다르게 나올 수 있다.)
               
        [예시1]              
            랜덤 ==> 3
            [출력] 5 + 3 + 1 = 9
           
        [예시2]
            랜덤 ==> 5
            [출력] 1 + 5 + 3 + 7 + 1 = 17    
    */

    let num = Math.floor(Math.random() * 4 + 2);
    document.write("랜덤 ==>" + num);
    let total = 0;
    document.write("<br>")
    for(a = 1; a <= num; a+=1 ){
        let x = Math.floor(Math.random() * 9 + 1);
        if(x % 2 == 1){
            document.write(x);
        if(a <= num - 1){
            document.write(" + ");
        }
        total += x
        } else {
            a -= 1;
        }
    }
    document.write(" = " + total);

</script>