본문 바로가기
오답 노트

Javascript 오답 노트 02

by 코딩대원 2022. 10. 2.

Javascript 오답노트 02

Javascript 오답노트 정리 두 번째 시간입니다.
첫 번째 보다는 2배 많이 맞았지만 간발의 차이로 틀리고.. 아직 갈길이 멉니다.
틀린 문제를 잘 정리해서 다음에는 더 많이 맞추도록 합시다!


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

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

while문에 대한 문제입니다.
10>1는 true이니 다음으로 넘어갑니다.
10를 3으로 나눈 나머지 값이 1이 되어 조건에 맞으므로 i값 10을 hap에 더해줍니다.
if문 밖으로 나가니 i--가 있으니 i값은 9가 되고 while문으로 다시 올라갑니다
9>1는 true이므로 다음으로 넘어가고 이 과정을 반복합니다.
while문이 종료 될때까지 if 조건문에 맞는 숫자는 10, 7, 4가 나오고 합은 21이 됩니다.

정답 확인하기
21

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

{
    function func(){
        let a = [];
        
        for( i =1; i<=5; i++){
            a += [i]
        }
        document.write(a[2]);
    }
    func();
}

for문 배열에 대한 문제입니다.
for문에 넣게될 i의 값은 1,2,3,4,5입니다.
a의 값은 [i]를 더한 값이니 1 12 123 1234 12345를 거쳐서 12345가 됩니다.
여기서 a배열의 3번째 위치에 있는 값을 출력하니 답은 3이 됩니다.

정답 확인하기
3

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

{
    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] != 2){
                value++;
            }
        }
        document.write(value);
    }
    func();
}

for문 안에 if문이 있는 형태로 배열이 들어간 형태 입니다.
for문에서 a.length는 11이니, i에 들어가는 숫자는 0~10이 됩니다.
i[0] = 2 , i[1] = 3, i[2] = 2, i[3] = 4 이런식으로 값이 나오게 됩니다.
여기서 if문의 조건 a[i] 의 값 중 2인 것을 빼주면 3,4,5,6,7,3,3이 남게 됩니다.
이때마다 value값을 ++하게되니 답은 7이 됩니다.

정답 확인하기
7

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

{
    function func13(){
        let a, b, c, result;
        a = 10;
        b = 20;
        c = 30;
        result = a < b ? b/a : c;
        
        document.write(result);
    }
    func13();
}

단순한 삼항연산자 문제입니다.
대입해보면 10<20이 성립하니 b/a로 넘어갑니다.
답은 20/10 = 2가 됩니다.

정답 확인하기
2

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

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

while문 안에 if문이 있고 continue가 들어간 형태입니다.
0<10 true이니 넘어가고 a++니 1로 시작합니다.
조건문에 맞게 a를 2로 나눈 나머지가 1인 값을 제외하고 넘어갑니다.
sum은 a의 합이니 더해주고 다시 올라갑니다.
이 과정을 반복하면 a++를 받아 시작하는 숫자는 1~10이 되고
조건에 따라 1,3,5,7,9를 제외하고 2,4,6,8,10를 더해주면 30이 나옵니다.

정답 확인하기
30

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

{
    function func(a, b, c){
        let answer;
        if(a < b) answer = a;
        else answer = b;
        if(c < answer) answer = c;
        document.write(answer);
    }
    func(2, 5, 10)
}

중복 if문에 대한 문제입니다.
차례대로 대입해서 비교하면 답이 나오는 간단한 문제입니다..
첫번째 if문에서 2<5 는 true이니 a값을 가져갑니다.
다음 if문 10<2 는 false이니 a값을 그대로 가져가 출력합니다.

정답 확인하기
2

14. 다음의 결괏값을 작성하시오.

{
    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));
}

for of문과 매개변수의 개념을 묻고 있는 문제입니다.
str에 저장된 값을 s에 받아와 진행합니다.
x의 값은 요소로 w,e,b,s,t,o,r,y,b,o,y가 되는데 조건문에 맞게 w가 아닌 값일때
""상태인 answer에 #을더하고 아닐때 요소값을 더해주면,
return하면 답은 w##########가 나옵니다

정답 확인하기
w##########

15. 다음의 결괏값을 작성하시오.

{
    function func(s,t){
        let answer = 0;
        for(let x of s){
            if(x !== t) answer++;
        }
        return answer;
    }

    let str = "webstoryboy";
    document.write(func(str,'t'));
}

14번과 비슷한 유형입니다.
str과 't'를 s,t 에 받아와 진행합니다.
0인 answer값에 조건문을 통과할때마다 ++해주면 t하나를 빼고 더하면 되고
이후 answer값을 return해줍니다.

정답 확인하기
10

16. 다음의 결괏값을 작성하시오.

{
    function func(s){
        let answer = "";
        for(let x of s){
            if(x === x.toUpperCase()) {
                answer += x.toLowerCase();
            } else {
                answer += x.toUpperCase();
            }
        }
        return answer;
    }
    document.write(func("webStoryBOY10"));
}

매개변수,for of문과 toLowerCase,toUpperCase 메서드에 대해 묻는 문제입니다.
s에 webStoryBOY10를 받아서 진행합니다.
x의 값 요소 w,e,b,S,,t,o,r,y,B,O,Y,10에서 대문자로 바꾼것과 값이 같은 S,B,O,Y는 toLowerCase()를 거쳐 소문자로 바꿔주고
아닌것들은 else문으로 넘어가서 toUpperCase()를 받아 대문자로 바꿔서 answer값에 더해줍니다.
answer값을 리턴하면 소문자는 대문자로 대문자는 소문자로 값이 나옵니다.

정답 확인하기
WEBsTORYboy10

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

{
    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;
    }
    document.write(solution([1,2,3,4,5], 2))
}

filter, sort, 삼항연산자에 대해 묻는 문제입니다.
우선, 값을 그대로 대입봅시다. div의 값은 [1,2,3,4,5] 요소를 2로 나눈 값 중 나머지가 0인 값 2,4가 됩니다.
answer 값은 2 > 0은 true 이므로 div.sort((a,b) => a - b)로 갑니다. a-b 순서이므로 2,4가 그대로 나옵니다.
answer를 리턴해주면 끝입니다.

정답 확인하기
2,4

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

{
    function solution(numbers){
        let answer = 0;
        for(let i = 0; i<10; i++){
            if(!numbers.includes(i)){
                answer += i;
            }
        }
        return answer;
    }
    document.write(solution([1,2,3,4,6,7,8,0]))
}

for문과 includes 메서드에 대해 묻는 문제입니다.
우선, 값을 그대로 대입해줍시다.
for문 안 i에 들어갈 수 있는 숫자는 0~9,
includes는 true,false를 반환하는 메서드입니다.
조건문에서 [1,2,3,4,6,7,8,0]의 값을 포함하지 않는 i값을 answer에 +i를 해주도록 되어있으므로
정답은 5+9 = 14입니다.

정답 확인하기
14

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

{
    function solution(n){
        for(let i=1; i<n; i++){
            if(n%i === 1) return i;
        }
    }
    document.write(solution(10))
}

오답노트 02번 마지막 문제입니다.
return의 개념에 대해 묻고있는 문제입니다.
for문 안 식에 따르면 i의 값은 1~9가 됩니다.
10을 i값으로 나눈 나머지 값이 1이 되는 i값을 리턴합니다.
조건에 맞는 i값은 3,9가 있지만 return의 위치가 for문 안에 있으므로 바로 종료시킵니다.

정답 확인하기
3


두 번째 여정이 드디어 끝났습니다.
이제 10문제 만들러 가야겠네요..ㅠㅠ
다음에는 꼭 통과해서 쉽시다!
+ 틀린 점이 있다면 지적해주시면 감사하겠습니다.

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

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

댓글


HTML
CSS

JAVASCRIPT

자세히 보기