Javascript Test05

03. 결괏값을 작성하시오.

{
    function func(){
        let a = [1,2,3,4,5,6,7,8,9];    //a의 값 중 2의 배수(짝수)일 때 cnt의 값이 1씩 증가된다.
        cnt = 0;                        //만약 a[1]일 때 2%2==0이 성립되므로 cnt = 0+1 즉 1이 된다. 
        for( i=0; i<a.length; i++){     //다시 a[3]일 때 4%2==0이 성립되므로 cnt = 1+1 즉 2가 된다. 
            if(a[i]%2 == 0){            //이렇게 반복하게 되면 값은 4가 나오게 된다.     
                cnt += 1;
            }
        }
        document.write(cnt)//정답 : 4
    }
    func();
}

06. 결괏값을 작성하시오.

{
    function func(){
        let i = 0;  //for문에서는 초기값은 무조건 실행하고 그 뒤 조건에 맞을 때 마다 실행된다.
        let j = 0;  //때문에 j값이 출력이 되면 i도 반복을 멈추게 된다. 여기서 j는 i가 8일 때 최종값이 나오므로 값은 36이 된다.

        for(i=0; i<=8; i++){
            j += i;     //이 때 i는 j= 36 + 9 에서 반복이 멈추기 때문에 더이상 j값을 구하지 않고 종료된다. 때문에 i값은 9가 된다.
        }
        document.write(j + i) //정답은 36 + 9가 되므로 값은 45가 나오게 된다.
    }
    func();
}

09. 결괏값을 작성하시오.

{
    //while문의 조건에서 a값이 10보다 작을 경우 a를 1씩 증가시키고 조건식에 들어간다. 
    //즉 0123456789까지 while의 조건에 충족하므로 1씩 증가시켜 12345678910을 불러온다.
    //이 값을 조건식에 대입한 뒤 홀수값을 제외(continue : 해당 조건의 값을 출력하지 않고 건너 뜀)한 나머지 값을 모두 합한다.(2+4+6+8+10)
    //최종값 a가 10일 때 sum = 20 + 10이 되므로 정답은 30이 된다.
    function func(){
        let a=0;
        let sum=0;
        while(a<10){
            a++;
            if(a%2==1) continue;
            sum+=a
        }
        document.write(sum); //정답 : 30
    }
    func();
}

10. 결괏값을 작성하시오.

{
    //while문에서 (0)은 false이기 때문에 조건식이 실행되지 않는다. 즉 초기값인 0이 정답이 된다.
    //반대로 while(1)은 true이다. 늘 이런 훼이크 조심..! ㅜㅜ
    function func(){
        let a=0;
        let sum=0;
        while(0){
            a++;
            if(a%2==1) continue;
            sum+=a; 
        }
        document.write(sum); //정답 : 0
    }
    func();
}

11. 결괏값을 작성하시오.

{
    //arrData에 arrSubject값을 저장한 뒤 그 길이만큼 반복시킨다.(4번반복)
    // 1번 반복할 때 Number메서드를 통해 arrSubject의 문자열을 숫자로 변환시킨다.(arrSubject[0]==100)
    // 즉 result의 값은 340
    function test(arrData){
        let result = 0;
        for( let i=0; i<arrSubject.length; i++){
            result+=Number(arrSubject[i]);
        }
        let num = result;
        return num;
    }
    let arrSubject = ["100","90","80","70"];
    let result = test(arrSubject);

    document.write(result); //정답 : 340
}

14. 결괏값을 작성하시오.

{
    //매개변수를 통해 s에 str값 저장 후 함수 실행
    //for of를 통해 x에 s값 저장 
    //조건식 : 만약 x에서 문자열 w가 아닐 경우 #으로 변환 후 answer에 저장한다. (!= 아닌 경우 / == 맞을 경우)
    //w가 맞다면 그대로 저장한다. 즉 정답은 w##########
    function func(s){
        let answer = "";
        for(let x of s){
            if(x!='w') answer +='#';
            else answer += x;
        }
        return answer;
    }
    let str = "webstoryboy";
    document.write(func(str)); // 정답 : w##########
}

15. 결괏값을 작성하시오.

{
    //위와 마찬가지로 각각 매개변수를 저장
    //만약 x에서 t가 아닐 경우 answer의 값이 1씩 증가.
    //즉 t를 제외한 값의 갯수를 구하면 된다. websoryboy == 10
    function func(s, t){
        let answer = 0;
        for(let x of s){
            if(x !== t) answer++;
        }
        return answer; //정답 : 10;
    }
    let str = "webstoryboy";
    document.write(func(str, 't'));
}

16. 결괏값을 작성하시오.

{
    //매개변수 사용
    //만약 x가 대문자라면 소문자로 변환하여 answer에 저장
    //대문자가 아닌경우 대문자로 변환하여 answer에 저장
    //return을 사용하여 종료후 answer값 출력.
    function func(s){
        let answer = "";
        for(let x of s){
            if( x === x.toUpperCase()){
                answer += x.toLowerCase();
            }else{
                answer += x.toUpperCase();
            }
        }
        return answer; //정답 : WEBsTORboy10
    }
    document.write(func("webStorBOY10"));
}

18. 결괏값을 작성하시오.

{
    //매개변수 사용
    //필터를 사용하여 요소 중 짝수인 경우 (divisor == 2) 새로운 배열로 반환한다.
    //즉 div = [2, 4]가 되며 이때 div의 길이값이 0보다 클 때 참인 경우 배열을 오름차순으로 정렬 거짓인 경우 각 값에 -1을 해준다.
    //2>0으로 참이기 때문에 오름차순으로 정렬. 즉 2, 4가 answer에 저장된다.
    function solution(arr, divisor){
        var answer = [];

        const div = arr.filter(el => el % divisor == 0);
        answer = div.length > 0 ? div.sort((a,b) => a-b) : [-1];
        return answer; //정답 : 2, 4
    }
    document.write(solution([1,2,3,4,5], 2));
}

19. 결괏값을 작성하시오.

{
    //매개변수 사용. 즉 n = 10이 된다. 
    //i가 1일 때 i가 10보다 작은 경우 조건식 실행을 반복한다.
    //이때 조건식이 10 % i ===1인 경우 리턴 즉 종료하기 때문에 나머지 값이 1이 나오는 i=3에서 종료하게 된다.
    //i값을 호출했으므로 정답은 3이 된다.
    function solution(n){
        for( let i=1; i<n; i++){
            if(n%i===1) return i; //정답 : 3
        }
    }
    document.write(solution(10));
}