본문 바로가기
오답 노트

Javascript 오답 노트 01

by 코딩대원 2022. 10. 2.

Javascript 오답 노트 01

Javascript 오답노트 정리 첫 번째 시간입니다.
맞은 문제가 거의 없어서 쓸게 너무 많네요 ㅠㅠ..
틀린 문제를 잘 정리해서 다음에는 많이 맞추도록 합시다!


01. 다음의 결과값을 작성하시오.

{
    function func(){
        for( i =1; i<=7; i++){
            for( j=1; j<=i; j++){
                document.write(j);
            }
            document.write("<br>")
        }
    }
    func();
}

중첩 for문에 대한 문제입니다.
i에 들어갈 수 있는 숫자는 1,2,3,4,5,6,7이고 1부터 대입합니다.
두번째 for문에서 1<=1는 조건에 맞으니 j값을 출력하고 j++합니다.
j에 2를 대입할시 조건에 맞지 않으므로 i로 올라갑니다.
i에 2를 대입하고 위의 과정을 반복하면 아래의 답이 나옵니다.

정답 확인하기
1
12
123
1234
12345
123456
1234567

02. 다음의 결과값을 작성하시오.

{
    function func(){
        let i = 10, hap = 0;
        while(i>1){
            i--;
            if( i % 3 ==1){
                hap += i;
            }
        }
        document.write(hap);
    }
    func();
}

while문에 대한 문제입니다.
i는 10에서 true로 시작이지만 i--가 있어서 9부터 시작하고 if문안에 들어갈 수 있는 i는 9~1이 됩니다.
while문 안에 if조건문 i를 3으로 나눈 나머지값이 1이 나오는 것은 7,4,1가 되고 합은 12입니다.

정답 확인하기
12

03. 다음의 결과값을 작성하시오.

{
    function func(){
        let a = [];

        for( i=1; i<=15; i+=4){
            a += [i]
        }
        document.write(a);
    }
    func();
}

for문에 배열에 대한 문제입니다.
i에 들어갈 수 있는 숫자는 1~15가 되고 a는 [i]를 더한값이니 조건문에 따르면
a의 값은 1,1+4,5+4,9+4가 됩니다.

정답 확인하기
15913

04. 다음의 결과값을 작성하시오.

{
    function func(){
        let a = [1,2,3,4,5,6,7,8,9], cnt = 0;

        for( i=0; i<a.length; i++){
            if(a[i] % 2 == 0){
                cnt = cnt + 1;
            }
        }
        document.write(cnt);
    }
    func();
}

for문에 배열에 대한 문제입니다.
i<9 인 a값을 if 조건문을에 대입해서 해석하면 짝수의 합이 됩니다.
cont는 0이고 조건에 맞을때마다 +1 한다고 하면 2,4,6,8 이 나와서 4개가 됩니다.

정답 확인하기
4

05. 다음의 결과값을 작성하시오.

{
    function func(data,exp){
        let result = 1;
        for( i = 0; i<exp; i++){
            result = result * data
        }
        document.write(result);
    }
    func(3, 3);
}

for문에 대한 문제입니다.
func에 3,3을 그대로 대입시켜보면 for문 i에 들어갈 수 있는 숫자는 0,1,2가 됩니다. 0부터 돌립니다.
result는 1인 상태이고 1*3 = 3이 됩니다. 다시 위로 올라가서 1을 돌리고 2를 돌립니다.
이 과정을 거치면 1*3= 3 , 3*3 = 9 , 9*3 = 27이 됩니다.

정답 확인하기
27

06. 다음의 결과값을 작성하시오.

{
    function func(){
        let a = [2,3,2,4,5,6,7,2,3,3,2];
        let value = 0;
        for( i =0; i<a.length; i++){
            if(a[i] == 7){
                value++;
            }
        }
        document.write(value);
    }
    func();
}

for문에 배열에 대한 문제입니다.
for문에서 i에 들어갈 수 있는 숫자는 0~10이 됩니다.
이 중에서 i값이 7일 경우 value값을 ++하게 되니 답은 1이됩니다.

정답 확인하기
1

07. 다음의 결과값을 작성하시오.

{
    function func(){
        let i, j = 0;
        for( i = 0; i<5; i++){
            j+= i;
        }
        document.write(i);
        document.write(j);
    }
    func();
}

for문에 대한 문제입니다.
i에 들어갈 수 있는 숫자가 0,1,2,3,4
j는 계속 더해 나가면 i가 0일때 0,
1일때 1,
2일때 3,
3일때 6,
4일때 10이 됩니다.
5는 for문을 만족시키지 못하니 반복문을 빠져나오게 되고, 답은 i는 5 , j는 10이 됩니다.

정답 확인하기
5
10

08. 다음의 결과값을 작성하시오.

{
    function func(){
        let a = 12, b = 8, c = 2, d = 3;
        a /= b - c * d;

        document.write(a);
        document.write(a*b);
    }
    func();
}

그냥 그대로 대입해보면 a는 6이 나오고 b는 8이니 곱해서 48이 나옵니다.
이런 간단한 문제를 제가 왜 틀렸는지 모르겠습니다..ㅠㅠ 1주차는 정말 심각했군요.

정답 확인하기
6
48

09. 다음의 결과값을 작성하시오.

{
    function func(){
        let a = 0, sum = 0;
        while( a < 10){
            a++;
            if(a % 2 ==1) continue;
            sum += a;
        }
        document.write(sum);
    }
    func();
}

while과 continue의 개념에 대해 묻고 있는 문제입니다.
while 을 지나서 a++를 받고나면 a는 1~10이 됩니다.
여기서 if문의 조건 2로나눈 나머지가 1인 숫자는 1,3,5,7,9가 됩니다.
continue는 조건에 맞아 다시 시작하는 시점은 포함하지 않기 때문에 남는 숫자는 짝수의 합이 됩니다.
따라서 답은 2+4+6+8+10 이 됩니다.

정답 확인하기
30

10. 다음의 결과값을 작성하시오.

{
    function func(){
        let i = 0; sum = 0;
        while(1){
            i++;
            if( i > 10) break;
            if(i % 5 == 0) continue;
            sum += i;
        }
        document.write(sum);
    }
    func();
}

while과 break coutinue의 개념에 대해 묻고 있는 종합형 문제입니다.
while(1)은 true이니 실행시킵니다. i의값은 1++로 1로 시작합니다.
첫번째 if문을 이후의 i의 값은 1~10
두번째 if문을 만족하는 값은 5, 10으로 이를 제외하고 더합니다.
답은 1+2+3+4+6+7+8+9가 됩니다.

정답 확인하기
40

11. 다음의 결과값을 작성하시오.

{
    function solution(data){
        var answer  = data;
        answer = answer.toLowerCase();
        return answer;
    }
    document.write(solution("Javascript"));
}

toLowerCase에 대해 묻는 문제입니다.
Javascript 값을 data에 대입하면 answer 값은 Javascript가 됩니다.
이를 소문자로 바꿔주고 값을 리턴합니다.
toLowerCase도 아는데 왜 틀렸을까요...

정답 확인하기
javascript

12. 다음의 결과값을 작성하시오.

{
    function solution(a,b,c){
        let answer;

        if(a < b) answer = a;
        else answer = b;

        if( c < answer ) answer = c;

        return answer;
    }
    document.write(solution(2, 5, 1));
}

if문에 대한 return값 문제입니다.
이것도 차례대로 대입하면 그냥풀립니다...
자괴감이..

정답 확인하기
1

17. 다음의 결과값을 작성하시오.

{
    for(let i = 0; i < 5; i++){
        for(let j = 0; j < 5; j++){
            document.write('*');
        }
        document.write('<br>');
    }
}

드디어 날먹 문제들을 맞추고 넘어왔습니다.
중첩 for문에 대한 문제입니다.
1번 문제와 같은 유형으로 i가 0일때 아래로 내려가서 j식을 돌려주면 가로로 *가 나옵니다.
br태그는 바깥쪽 for문에 대한 결과값이니 세로로 나오게 됩니다.
만족 값은 5개, 5개로 아래와 같이 답이 나옵니다.

정답 확인하기
*****
*****
*****
*****
*****

18. 다음의 결과값을 작성하시오.

{
    function solution(a,b){
        let num = a > b;
        return num;
    }
    document.write(solution(5,9))
}

이것도 그냥 대입하면 됩니다.
성립되지 않는 값을 리턴하니 false가 나옵니다.

정답 확인하기
false

19. 다음의 결과값을 작성하시오.

{
    function solution(a, b){
        return (a + b) * ((a > b ? a - b : b - a) + 1) / 2;
    }
    document.write(solution(5, 9))
}

삼항연산자가 들어간 return값을 구하는 단순 계산문제입니다
대입해보면 a > b ?에서 성립하지 않으니 b - a로 계산합니다.
14 * 5 / 2 = 35가 됩니다.

정답 확인하기
35

20. 다음의 결과값을 작성하시오.

{
    function solution(text){
        return text.split('').join('/').replace('s','site')
    }
    document.write(solution('webs'))
}

드디어 오답노트 첫 번째 시간 마지막 문제입니다.
split, join, replace 메서드에 대해 묻고있는 문제입니다.
text에 webs를 대입하고 split으로 쪼개서 배열로 반환한 뒤, join으로 결합해주면 w/e/b/s가 됩니다.
여기에 replace로 s를 site로 바꿔해주면 w/e/b/site가 됩니다.

정답 확인하기
w/e/b/site

힘든 첫 번째 여정이 드디어 끝났습니다.
이제 두번째 시험 오답노트를 쓰러 가야겠네요..
틀린 점이 있다면 지적해주시면 감사하겠습니다.

'오답 노트' 카테고리의 다른 글

Javascript 오답 노트 04  (1) 2022.10.23
Javascript 오답 노트 03  (4) 2022.10.06
Javascript 오답 노트 02  (4) 2022.10.02

댓글


HTML
CSS

JAVASCRIPT

자세히 보기