Post

오답노트) 자바스크립트 시험

자바스크립트 문제 및 문제풀이

01. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
{
        function func(){
            let a = [];
    
            for(i=1; i<=5; i++){
                a += [i];
            }
            console.log(a);
        }
        func();
}   
   
//12345

이 함수는 func이라는 이름의 함수를 선언하고 있습니다. 이 함수는 아래와 같은 일을 합니다:

  1. 빈 배열 a를 선언합니다.
  2. 1부터 5까지의 숫자를 반복하여 배열 a에 추가합니다.
  3. console.log(a)를 호출하여 배열 a를 콘솔에 출력합니다.

02. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
        const arr = [100, 200, 300, 400, 500];

        const text1 = arr.join("*");
        arr.push("600");
        const text3 = arr.join("");
        arr.pop();
        const text4 = arr.join(" ");
    
        console.log(text1);
        console.log(text3);
        console.log(text4);
}   
   
//100*200*300*400*500
//100200300400500600
//100 200 300 400 500

주어진 코드는 배열의 다양한 메서드를 사용하여 배열을 조작하고 그 결과를 문자열로 변환하여 출력하는 것으로 보입니다.

  1. arr이라는 배열을 선언하고 초기화합니다. [100, 200, 300, 400, 500]으로 초기화되어 있습니다.
  2. arr.join(““)을 사용하여 배열의 요소를 “” 문자로 구분하여 하나의 문자열로 결합합니다. 결과는 “100200300400500”이 됩니다.
  3. arr.push(“600”)을 사용하여 배열의 끝에 새로운 요소 “600”을 추가합니다.
  4. arr.join(““)을 사용하여 배열의 모든 요소를 연결하여 하나의 문자열로 만듭니다. 결과는 “100200300400500600”이 됩니다.
  5. arr.pop()을 사용하여 배열의 마지막 요소를 제거합니다. “600”이 제거됩니다.
  6. arr.join(“ “)을 사용하여 배열의 모든 요소를 공백으로 구분하여 하나의 문자열로 만듭니다. 결과는 “100 200 300 400 500”이 됩니다.
  7. console.log()를 사용하여 각 문자열을 콘솔에 출력합니다.

03. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
{
        let a, b = 10;

        for(let i=0; i<5; i++){
            a = i;
            b -= a;
        }
        console.log(a, b)
}
//4 0

주어진 코드에서는 변수 a와 b를 사용하여 반복문을 실행하고 그 결과를 출력하는 것으로 보입니다. 코드를 살펴보겠습니다.

  1. 반복문에서 변수 a는 현재 반복 인덱스 i의 값을 갖고, 변수 b는 각 반복마다 a의 값을 빼는 연산을 수행합니다. 반복문이 종료된 후에는 마지막 반복에서 a와 b의 값이 출력됩니다.

  2. 각 반복에서 a는 반복 인덱스 i의 값이 되고, b는 a의 값을 빼는데, 초기에 b는 10이므로 10에서 각 반복 인덱스 i를 뺀 값이 b에 할당됩니다.

  3. 반복문이 5번 반복되므로 a와 b는 각 반복에서의 값으로 최종적으로 결정됩니다.


04. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
        function func(){
            let i = 20, j = 20, k = 30;
            i /= j;
            j -= i;
            k %= j;
    
            console.log(i);
            console.log(j);
            console.log(k);
        }
        func();
}
    
// 1
// 19
// 11

주어진 코드에서는 함수 func()를 정의하고 호출하여 변수들을 조작하고 그 결과를 출력하는 것으로 보입니다. 코드를 살펴보겠습니다.

  1. 변수 i를 20으로 초기화합니다.
  2. 변수 j를 20으로 초기화합니다.
  3. 변수 k를 30으로 초기화합니다.
  4. i를 j로 나눈 후 결과를 i에 할당합니다. 이는 i = i / j;와 같습니다. 따라서 i는 20을 20으로 나눈 결과인 1이 됩니다.
  5. j에서 i를 뺀 후 결과를 j에 할당합니다. 이는 j = j - i;와 같습니다. 따라서 j는 20에서 1을 뺀 결과인 19가 됩니다.
  6. k를 j로 나눈 나머지를 구한 후 결과를 k에 할당합니다. 이는 k = k % j;와 같습니다. 따라서 k는 30을 19로 나눈 나머지인 11이 됩니다.
  7. console.log()를 사용하여 각 변수인 i, j, k의 값을 콘솔에 출력합니다.


05. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
{       
        let k = 1;
        let temp;
        for(let i=0; i<=3; i++){
                temp = k;
                k++;
                console.log(temp + "");
        }    
}
// 1번
// 2번
// 3번
// 4번

주어진 코드는 반복문을 사용하여 변수 k의 값을 증가시키고, 각 반복에서 이전 값(temp)을 출력하는 것으로 보입니다. 코드를 살펴보겠습니다.

  1. 변수 k를 1로 초기화합니다.
  2. 반복문을 실행합니다. 반복 횟수는 0부터 3까지이며, 총 4번 반복됩니다.
  3. 각 반복에서 변수 temp에 현재 k의 값을 저장합니다.
  4. 변수 k를 1 증가시킵니다.
  5. 변수 temp의 값을 출력합니다. 이 때 “번”이라는 문자열을 붙여 출력합니다.

06. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
{
        let num1 = 3;
        let num2 = 7;
        if(++num1 > 5 || num2++ < 1){
                console.log(num1);
        }
        console.log(num2)
}
// 8
  1. 변수 num1을 3으로 초기화합니다.
  2. 변수 num2를 7로 초기화합니다.
  3. ++num1을 통해 num1의 값을 1 증가시킵니다. 따라서 num1은 4가 됩니다.
  4. num1 > 5 조건을 검사합니다. 이 조건은 참입니다.
  5. 논리 OR 연산자( )를 사용하여 두 번째 조건 num2++ < 1을 검사합니다. 이 조건은 거짓입니다. 이는 num2의 값이 7이며, 후위 증가 연산자 num2++에 의해 num2의 값은 8이 됩니다.
  6. 따라서 첫 번째 조건문의 조건은 참이므로 console.log(num1);이 실행되어 4가 출력됩니다.
  7. console.log(num2);가 실행되어 8이 출력됩니다.

07. 다음을 보고 리턴값을 생략하여 한줄로 표현하시오!

1
2
3
4
5
6
7
8
9
10
11
{
        let num = [1, 5, 1, 2, 7, 5];
        for(let i=0; i<6; i++){
                if((i+2) % 2 == 0){
                        console.log(num[i]);
                }
        }
}
// 1
// 1
// 7

주어진 코드는 배열 num에 있는 요소 중에서 홀수 인덱스에 있는 값을 출력하는 것으로 보입니다. 코드를 살펴보겠습니다.

  1. 배열 num에는 [1, 5, 1, 2, 7, 5]가 할당되어 있습니다.
  2. for 반복문을 사용하여 변수 i를 0부터 5까지 증가시킵니다.
  3. 각 반복에서 (i + 2) % 2를 계산합니다. i + 2는 2, 3, 4, 5, 6, 7이 되며, 이를 2로 나눈 나머지는 각각 0, 1, 0, 1, 0, 1이 됩니다.
  4. 이 때, 나머지가 0인 경우에만 조건문이 참이 되어 해당 요소를 출력합니다.
  5. 따라서 출력되는 값은 배열 num의 홀수 인덱스에 해당하는 값입니다. 즉, 인덱스가 1, 3, 5인 값이 출력됩니다.


08. 다음의 결괏값을 보고 빈 칸을 채우시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
        let num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

        for(let i=0; i<=9; i++){
                switch(num[i] % 2){
                        case 1:
                            console.log(num[i]);
                            break;
                        default:
                            console.log("*");
                }
        }
}
// *
// 1
// *
// 3
// *
// 5
// *
// 7
// *
// 9

주어진 코드는 배열 num에 있는 각 요소를 검사하여 홀수인 경우에는 해당 값을 출력하고, 짝수인 경우에는 “*” 문자열을 출력하는 것으로 보입니다. 코드를 살펴보겠습니다.

  1. 배열 num에는 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]가 할당되어 있습니다.
  2. for 반복문을 사용하여 변수 i를 0부터 9까지 증가시킵니다.
  3. 각 반복에서 num[i] % 2를 계산하여 해당 요소가 홀수인지 짝수인지를 판별합니다.
  4. switch 문을 사용하여 결과에 따라 다른 작업을 수행합니다.
  5. num[i] % 2가 1인 경우 (홀수인 경우): 해당 값을 출력합니다.
  6. 그 외의 경우 (짝수인 경우): “*” 문자열을 출력합니다.
  7. 각 요소에 대해 조건에 맞는 처리를 한 후 반복합니다.

09. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
let cnt = 0; // 홀수의 개수를 저장할 변수를 0으로 초기화합니다.
let sum = 0; // 홀수들의 합을 저장할 변수를 0으로 초기화합니다.

// 0부터 7까지 반복합니다.
for (let i = 0; i <= 7; i++) {
    // 현재 숫자가 홀수인지 확인합니다.
    if (i % 2 == 1) {
        cnt++; // 홀수의 개수를 1 증가시킵니다.
        sum += i; // 홀수들의 합에 현재 홀수를 더합니다.
    }
}

console.log(cnt + ", " + sum / 2); // 홀수의 개수와 홀수들의 합의 평균을 출력합니다.

주어진 코드는 0부터 7까지의 홀수의 개수와 해당 홀수들의 합을 구하는 것입니다. 코드를 실행해 보겠습니다.
결과를 확인해 보면, 홀수의 개수는 4개이고 홀수들의 합은 16이며, 따라서 평균은 4가 됩니다. 그러므로 코드의 출력은 “4, 8”이 됩니다.
cnt 변수는 홀수의 개수를 세는 데 사용됩니다.
sum 변수는 홀수들의 합을 저장하는 데 사용됩니다.
반복문을 통해 0부터 7까지의 모든 숫자를 확인하고, 홀수인 경우에는 cnt를 증가시키고 해당 숫자를 sum에 더합니다.
마지막으로 cnt와 sum을 이용하여 홀수의 개수와 홀수들의 합의 평균을 계산하여 출력합니다.

10. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
let a = 1, b = 1, num;

for (let i = 0; i < 6; i++) {
    num = a + b; // 현재 항은 이전 두 항의 합입니다.
    a = b; // 다음 항을 계산하기 위해 변수를 갱신합니다.
    b = num; // 다음 항을 계산하기 위해 변수를 갱신합니다.
}

console.log(num); // 결과를 출력합니다.

주어진 코드는 피보나치 수열을 계산하는 것입니다. 피보나치 수열은 첫 번째와 두 번째 항이 1이며, 그 뒤의 모든 항은 바로 앞의 두 항의 합으로 이루어지는 수열입니다. 코드를 실행해보겠습니다.
위 코드를 실행하면, 피보나치 수열의 여섯 번째 항을 계산하여 출력합니다. 결과는 1, 2, 3, 5, 8, 13 중 하나가 될 것입니다.

  1. a와 b 변수는 각각 현재 항의 앞의 두 항을 나타냅니다.
  2. for 반복문을 통해 다음 항을 계산합니다. 현재 항은 이전 두 항의 합이므로, num = a + b를 통해 계산합니다.
  3. 다음 항을 계산하기 위해 a와 b 변수를 갱신합니다. a는 이전 항의 값을 갖고, b는 현재 항의 값을 갖습니다.
  4. 반복문이 종료된 후에는 마지막 항인 num을 출력합니다.
  5. 코드를 실행하면 결과로 13이 출력됩니다. 이는 피보나치 수열의 여섯 번째 항이 13임을 나타냅니다.
  6. a와 b는 초기에 각각 1로 설정됩니다. 이는 피보나치 수열의 첫 번째와 두 번째 항입니다.
  7. 반복문을 통해 각 항을 계산합니다. 현재 항은 이전 두 항의 합입니다.
  8. 각 반복에서 num 변수에 이전 두 항의 합을 저장하고, 다음 항을 계산하기 위해 a와 b의 값을 갱신합니다.
  9. 마지막으로 계산된 항인 num이 출력됩니다.


11. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
{
        let a, b, result;
        a = 7, b = 4
        result = a | b;
    
        console.log(result)
}
// 7

주어진 코드는 피보나치 수열의 여섯 번째 항을 계산하고 출력하는 것입니다. 피보나치 수열은 첫 번째와 두 번째 항이 1이며, 그 뒤의 모든 항은 바로 앞의 두 항의 합으로 이루어지는 수열입니다.

코드를 실행하면 결과로 13이 출력됩니다. 이는 피보나치 수열의 여섯 번째 항이 13임을 나타냅니다.

  1. a와 b는 초기에 각각 1로 설정됩니다. 이는 피보나치 수열의 첫 번째와 두 번째 항입니다.
  2. for 반복문을 통해 각 항을 계산합니다. 현재 항은 이전 두 항의 합입니다.
  3. 각 반복에서 num 변수에 이전 두 항의 합을 저장하고, 다음 항을 계산하기 위해 a와 b의 값을 갱신합니다.
  4. 반복문이 종료된 후에는 마지막 항인 num이 출력됩니다.

12. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
        function solution(a, b, c){
                let answer = "YES", max;
                let total = a + b + c;
        
                if(a > b) max = a;
                else max = b;
                if(c > max) max = c;
                if(total-max <= max) answer = "NO"; 
                
                return answer;
        }
    
        console.log(solution(53, 93, 107));
}
//yes


13. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
{
        function solution(a, b, c){
                let answer;
                if(a < b) answer = a; 
                else answer = b;
                if(c <= answer) answer = c; 
                return answer;
        }
        console.log(solution(15, 12, 11));
}
// 11

주어진 함수는 세 개의 숫자를 입력으로 받아 가장 작은 숫자를 반환하는 함수입니다.

해당 함수는 다음과 같은 과정을 거칩니다:

  1. 먼저 두 숫자 a와 b를 비교하여 작은 값을 answer 변수에 저장합니다.
  2. 저장된 answer와 세 번째 숫자 c를 비교하여 더 작은 값을 answer에 저장합니다.
  3. 최종적으로 answer를 반환합니다.
  4. 따라서 주어진 입력이 (15, 12, 11)일 때, 11이 가장 작은 숫자이므로 함수는 11을 반환합니다.

14. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
{
        function solution(day, arr){
                let answer = 0;
                for(let x of arr){
                        if(x % 10 == day) answer++;
                }
                return answer;
        }
        
        arr = [25, 23, 11, 47, 53, 17, 33, 40];
        console.log(solution(0, arr));
}
// 1

주어진 배열은 [25, 23, 11, 47, 53, 17, 33, 40] 이며, 이 배열에서 일의 자릿수가 0인 숫자는 40 하나입니다. 나머지 숫자들은 일의 자릿수가 0이 아닙니다. 따라서 함수는 1을 반환해야 합니다.

그러나 이전에 제가 제시한 해설은 각 요소의 일의 자릿수가 day와 일치하는 경우의 수를 세는 것이 아니라, 각 요소가 day로 나누어 떨어지는 경우의 수를 세는 것이었습니다. 이로 인해 오해가 발생했습니다.

따라서 주어진 문제를 다시 확인하여 새로운 해설을 제공하겠습니다.


15. 다음의 결괏값을 보고 빈칸을 채우시오.

1
2
3
4
5
6
7
8
{
        let a, b, result;
        a = 7, b = 4
        result = a & b;
    
        console.log(result);
}
// 4

주어진 코드는 비트 AND 연산자(&)를 사용하여 변수 a와 b의 비트 단위 AND 연산을 수행하는 것입니다.

변수 a와 b에 각각 7과 4를 할당하고, 그 결과로 변수 result에 a와 b의 비트 단위 AND 연산의 결과를 저장합니다.

7의 이진 표현은 0111이고, 4의 이진 표현은 0100입니다. 이 두 숫자를 비트 단위 AND 연산하면, 각 자릿수별로 비트가 모두 1인 경우에만 1을 반환합니다.

따라서 7과 4의 비트 단위 AND 연산 결과는 다음과 같습니다:
0111 (7)
& 0100 (4)
—-
0100 (4)
결과로 4가 나옵니다.

따라서 코드의 출력은 4가 됩니다.

16. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
{
        let a = 6, b = 9, c = 3, result;
        result = ++a + b++ + ++c;
    
        console.log(result);
        console.log(a+b+c);
}
// 20 21

주어진 코드는 세 개의 변수 a, b, c에 각각 6, 9, 3을 할당하고, 이들을 사용하여 연산을 수행하는 것입니다.

result 변수에는 다음과 같은 연산이 수행됩니다:

a에 전위 증가 연산자가 적용되어 a의 값이 1 증가합니다. 따라서 a는 7이 됩니다.
b에 후위 증가 연산자가 적용되어 현재 b의 값을 result에 더하고, 그 후에 b의 값이 1 증가합니다. 따라서 result에는 현재 b의 값(9)이 더해집니다.
c에 전위 증가 연산자가 적용되어 c의 값이 1 증가합니다. 따라서 c는 4가 됩니다.
따라서 result에는 7 (a의 값) + 9 (현재 b의 값) + 4 (c의 값) = 20이 저장됩니다.

이어서 a, b, c의 값을 모두 더한 결과를 출력합니다. 각각의 값은 다음과 같습니다:

a: 7
b: 10 (전위 증가 연산자가 이미 적용되어 값이 1 증가함)
c: 4 (전위 증가 연산자가 적용되어 값이 1 증가함)
따라서 a + b + c의 값은 7 + 10 + 4 = 21이 됩니다.

결과를 출력하면 result의 값인 20과 a + b + c의 값인 21이 출력됩니다.

17. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
{
        let a, b = 10;

        for(let i=0; i<5; i++){
            a = i;
            b -= a;
        }
        console.log(a, b)
}
// 4 0

주어진 코드에서 변수 a와 b에는 다음과 같은 연산이 수행됩니다.

  1. 변수 b에는 초기값으로 10이 할당됩니다.
  2. for 반복문을 통해 변수 a와 b의 값을 반복적으로 변경합니다.
  3. 루프가 처음 실행될 때, i는 0이므로 a에 0이 할당되고, b에서 a를 뺀 값이 b에 다시 할당됩니다. 따라서 b의 값은 10이 됩니다.
  4. 다음 루프에서 i는 1이므로 a에 1이 할당되고, b에서 a를 뺀 값이 b에 다시 할당됩니다. 따라서 b의 값은 9가 됩니다.
  5. 위 과정을 루프가 끝날 때까지 반복합니다.
  6. 마지막으로 console.log(a, b)를 통해 변수 a와 b의 값을 출력합니다.
  7. 따라서 코드의 실행 결과는 마지막 루프에서 b에 0이 할당될 때의 a와 b의 값을 출력하는 것입니다.
  8. 반복문이 실행되면서 변수 b의 값은 초기값 10에서 반복문이 실행되는 횟수에 따라 감소하게 됩니다.
  9. 반복문이 끝나면 변수 b의 값은 0이 되며, 변수 a에는 마지막으로 할당된 값이 남게 됩니다.
  10. 따라서 console.log(a, b)를 통해 출력되는 값은 마지막 루프에서의 a와 b의 값입니다.
  11. 주어진 코드에서는 변수 a와 b에 대한 반복문이 실행됩니다. 반복문의 실행 결과에 따라 변수 a와 b의 값이 변화하고, 마지막에 이들의 값을 출력합니다.

  12. 변수 a와 b의 초기값은 다음과 같습니다:

a: 초기화되지 않았으므로 undefined
b: 10
반복문에서는 i가 0부터 4까지 증가하면서 아래의 작업이 반복됩니다:

  1. 현재의 i 값이 변수 a에 할당됩니다.
  2. 변수 b에서 변수 a의 값을 뺀 값이 변수 b에 다시 할당됩니다.
  3. 따라서 각 반복에서 변수 a와 b의 값은 다음과 같이 변화합니다:

  4. 첫 번째 반복: a는 0, b는 10 - 0 = 10
  5. 두 번째 반복: a는 1, b는 10 - 1 = 9
  6. 세 번째 반복: a는 2, b는 9 - 2 = 7
  7. 네 번째 반복: a는 3, b는 7 - 3 = 4
  8. 다섯 번째 반복: a는 4, b는 4 - 4 = 0
  9. 따라서 반복문이 종료된 후에 변수 a는 4, 변수 b는 0이 됩니다.

따라서 console.log(a, b)를 통해 출력되는 값은 “4 0”입니다.


18. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
{
        let num = 10;
        num += 2;
        num -= 3;
        num *= 5;
        num /= 5;
        num %= 9;
        
        console.log(num)
}
// 0

주어진 코드는 변수 num에 연속적인 산술 연산을 수행하는 것입니다. 각 줄에서의 연산은 다음과 같습니다:

  1. num += 2;: 현재 num의 값에 2를 더합니다. 따라서 num은 10 + 2 = 12가 됩니다.
  2. num -= 3;: 현재 num의 값에서 3을 뺍니다. 따라서 num은 12 - 3 = 9가 됩니다.
  3. num *= 5;: 현재 num의 값에 5를 곱합니다. 따라서 num은 9 * 5 = 45가 됩니다.
  4. num /= 5;: 현재 num의 값을 5로 나눕니다. 따라서 num은 45 / 5 = 9가 됩니다.
  5. num %= 9;: 현재 num의 값을 9로 나눈 나머지를 num에 할당합니다. 따라서 num은 9 % 9 = 0이 됩니다.
  6. 따라서 console.log(num)을 통해 출력되는 값은 0입니다.

19. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
{
        let num = [1, 5, 1, 2, 7, 5];
        for(let i=0; i<6; i++){
            if((i+2) % 2 == 0){
                console.log(num[i]);
            }
        }
}
// 1  1  7

주어진 코드는 주어진 배열 num에서 일부 요소를 선택하여 출력하는 것입니다. 반복문을 통해 배열을 순회하고, 조건문을 사용하여 특정한 요소를 선택하여 출력합니다.

주어진 배열은 [1, 5, 1, 2, 7, 5]입니다. 반복문은 i가 0부터 5까지 증가하면서 각각의 인덱스에 대해 다음을 수행합니다:

  1. (i+2) % 2 == 0 조건을 확인합니다. 여기서 (i+2)는 현재 인덱스 i에 2를 더한 값이며, 이를 2로 나눈 나머지가 0인지를 검사합니다.
  2. 만약 나머지가 0이면 해당하는 인덱스의 요소를 출력합니다.
    따라서 주어진 배열에서 (i+2)가 짝수일 때의 요소를 출력합니다. 여기서 (i+2)가 짝수가 되는 인덱스는 0, 1, 2, 3, 4, 5입니다.

각각의 인덱스에 대해 해당하는 요소를 출력하면 다음과 같습니다:

인덱스 0: 1
인덱스 2: 1
인덱스 4: 7

20. 다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
        let data = [10, 6, 7, 9, 3];
        let temp;
    
        for(let i=0; i<4; i++){
            for(let j=i+1; j<5; j++){
                if(data[i] > data[j]){
                    temp = data[i];
                    data[i] = data[j];
                    data[j] = temp;
                }
            }
        }
    
        console.log(data) 
}
//  [3, 6, 7, 9, 10]

주어진 코드는 버블 정렬(Bubble Sort) 알고리즘을 사용하여 주어진 배열 data를 정렬하는 것입니다. 버블 정렬은 인접한 두 요소를 비교하여 필요에 따라 위치를 교환하는 방식으로 동작합니다.

주어진 배열은 [10, 6, 7, 9, 3]입니다. 이 배열을 버블 정렬 알고리즘을 사용하여 오름차순으로 정렬합니다.

  1. 바깥쪽 반복문(i)은 배열의 첫 번째 요소부터 뒤에서 두 번째 요소까지 반복합니다. 배열의 길이가 5이므로 총 4번 반복합니다.
  2. 안쪽 반복문(j)은 현재 i 위치 다음의 요소부터 배열의 끝까지 반복합니다.
  3. 각각의 반복에서 현재 요소와 그 다음 요소를 비교하여, 현재 요소가 더 크다면 두 요소의 위치를 교환합니다.
  4. 이를 모든 요소에 대해 반복하면서 배열을 정렬합니다.
  5. 배열을 정렬하는 과정은 다음과 같습니다:

  6. 처음에는 [10, 6, 7, 9, 3]입니다.
  7. 첫 번째 반복에서는 10과 6을 비교하여 위치를 교환하지 않습니다. 따라서 배열은 변하지 않습니다.
  8. 두 번째 반복에서는 10과 7을 비교하여 위치를 교환하지 않습니다.
  9. 세 번째 반복에서는 10과 9를 비교하여 위치를 교환하지 않습니다.
  10. 네 번째 반복에서는 10과 3을 비교하여 위치를 교환합니다. 따라서 [3, 6, 7, 9, 10]으로 배열이 정렬됩니다.
This post is licensed under CC BY 4.0 by the author.

Trending Tags