Javascript/시험 오답

03월 03일 코딩시험_오답노트

아라라_ 2023. 3. 5. 17:35

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

Frederick Philips Brooks
Mythical Man-Month 저자
728x90

3월 3일 2차 시험을 봤는데요

이것도 한번씩 상기하는 것도 좋을것 같아 해설을 달아 정리하려고 합니다.

 

 


01. 1-50까지 for문으로 출력

for(let i = 1; i <=50; i++){
    document.write(i);
};
현재 for문을 사용하여 반복문을 통해 1부터 50까지 출력하려고 합니다.
 
  • 1부터이기 때문에 let i = 1;로 선언
  • 50까지이기때문에 i <= 50;
  • 반복 될때마다 증가하여야하기때문에 i++

이렇게 반복문을 사용한 다음 

  • 출력문을 for문 안에 넣어 하나하나 출력하게 하였습니다.

 

 

02. 1-50까지 while문으로 출력

let i = 0;
while (i < 50) {
    i++;
    document.write(i);
}

현재 사용하는 반복문은 while문으로 실행전에 참거짓을 반복문입니다.

  • let i = 0으로 변수를 선언후
  • while문의 조건식에 i<50까지로 조건을 달아둡니다.
  • while문 i++이라는 증감식을 넣어 반복될 때마다 값이 증가하도록 하였습니다.
  • 출력문을 while문 안에 넣어 반복될때마다 출력될수 있도록 하였습니다.

 

 

증감식과 출력문의 순서

while문은 변수를 따로 선언하고  증감식도 조건식이 아닌 반복되는 while문 안에 있기 때문에 반복되는 반복문으로 순서가 값에 영향을 줍니다. 

만약 위에서의 답이 아닌 변수가 1로 저장되어 시작된다면

조건식은 i <= 50 가 되고

출력문이 위로 증감식이 아래로 와야 위에서의 결과 값과 같은 결과가 나올 수있습니다.

let i = 1;
while (i <= 50) {
    document.write(i);
    i++;
}

 

 

 

03. 1-100까지 짝수로 출력(if문 사용X)

for(let i = 1; i*2 <=100; i++){
    document.write(i*2);
};

저는 이답을 적었지만

for(let i = 2; i <=100; i+=2){
    document.write(i);
};
 
이런 답도 나올 수 있습니다.
 
기준을 출력문을 건드려 결과값을 출력할지 아니면 출력문을 건드리지 않고 결과값을 출력할지 입니다.
만약 출력문을 건드린다면 
변수 i를 1로 출력하여 i에 2을 곱한 값이 100이 될때까지 반복하지만 i는 ++로 i 의 변화는 1,2,3,4,5...100이 됩니다.
하지만 출력문에서 그냥 i를 출력하게 된다면 값은 원하는 답인 2,4,6,8, ..., 100이 아닌 1,2,3,4,5, ..., 50이 될 것입니다.
풀어서 설명하자면
변수 값 조건식 증감식의 변화  출력값
i = 1 1*2<100 2 1
2 2*2<100 3 2
3 3*2<100 4 3
... ... ... ...
50 50*2<100 51 50
51 51*2<100(false) X X

이기때문에 출력문에 i*2을 넣어 짝수 를 출력하였습니다.

예제의 답은 정해지지 않습니다. 답보다 이해하고 왜 이런 답이 나왔는지 설명할수 있다면 된 것입니다.

하지만 위의 답은 출력문을 건드렸기때문에 깔끔하지 않다는게 단점입니다.

 

두번째 답은 변수 i 를 1로 저장하고 시작하여 증감식을 i+=2를 주어 표현하였기때문에 출력문을 i 그대로 출력할 수있습니다.

 

 
 
 
 

04. 1-100까지 홀수로 출력(if문 사용)

for(let i = 1; i <=100; i++){
    if(i % 2 ==1){
        document.write(i);
    }
};
우선 1부터 100까지 출력하기 때문에 변수 i는 1로 선언하여 시작하고 i<=100을 조건식으로 증감식은 ++로 주고 시작합니다.
그 후 1부터 100까지중 홀수를 출력하기 위해 if문을 사용하여 조건식을 2로 나누었을때 1이 나머지로 오는 수을 출력하는 것으로 조건식을 줍니다. 그후 i를 그대로 출력합니다.
 
 
 
 
 
 

05. 테이블 50칸 출력(1-50숫자 출력)

let table = "<table border='1'>";
let num = 0;
for(let i = 1; i <=10; i++){
    table += "<tr>";
    for(let j = 1; j <= 5; j++){
        num++;
        table += "<td>" + num + "</td>";
    }
    table += "</tr>";
};

table += "</table>";
document.write(table)

테이블을 만들때 테이블 태그를 출력하는 것으로 생각하고 만들면 됩니다.

먼저 테이블 태그로 연다음 for문으로 tr태그와 td태그를 원하는 만큼 반복할수 있도록 조건식을 겁니다.

이때 tr은 밑으로 10줄, td는 for문을 한번더 사용하여 옆으로 5줄을 주게되면 50칸의 테이블이 나옵니다.

하지만 칸 안에 숫자를 순서대로 넣어야 하기때문에 먼저 for문 밖에 변수 num에 0을 선언하고 중첩된 for문 중 두번째 for문 안에 num++을 넣어 중첩된 두번째 for문이 반복될때마다 수 가 늘어납니다.

 
 
 

06. 1-10까지 합 출력

let sum = 0;
for(let i = 1; i <=10; i++){
    sum += i
};
document.write(sum)

우선 1부터 10까지 합을구해야하기 때문에 변수 i는 1로 선언하여 시작하고 i<=10을 조건식으로 증감식은 ++로 주고 시작합니다. sum이라는 변수를 선언하여 준비하거 sum += i 로 반복문이 실행 될때마다 sum에 값이 계속하여 저장 되도록 합니다 
그리고 출력문은 합계 하나만 출력되면 됨으로 출력문을 for문 밖에 주면 합계가 나오게 됩니다

 
 

07. 구구단 출력

for(let i = 2; i <=9; i++){
    document.write(i + "단<br>")
    for(let j = 1; j <=9; j++){
        document.write(i+"*"+j+"="+ i*j+"<br>")
    }

};

중첩 for문은 처음 for문이 처음 한번 진행되면 다음 for문을 전부 반복한다음 다시 첫번째 for문으로 돌아갑니다. 첫번째 for문에 변수 i를 2로 선언하면서 시작하며 9단까지이므로 i <= 9로 조건식을 겁니다. 값이 증가하므로 i++로 증감식을 주고 출력문으로 단을 출력합니다. 두번째 for 문에는 변수 j를 2로 선언하면서 시작하며 x9까지 이므로 j <= 9로 조건식을 겁니다 그리고 증가이므로 ++로 증감식을 줍니다. 출력문그리고 출력문까지 주면 단별로 구구단이 나옵니다.

 

 

08. 함수 유형 4가지 작성

//선언
{
    function func(){
        document.write("실행<br>");
    };
    func();
}
//익명
{
    const func = function(){
        document.write("실행<br>");
    };
    func();
}
//매개변수
{
    function func(str){
        document.write(str);
    };
    func("실행<br>");
}
//리턴
{
    function func(){
        const str = "실행<br>";
        return str;
    }
    document.write(func());
}​
선언적 함수는
function으로 함수를 선언하며 이름을func로 줍니다. 출력문을 안에 넣고 함수 밖에 함수실행문을 넣습니다.
 
익명 함수는
상수 func을 선언하는데 값을 함수로 줍니다 상수 func안에 함수를 선언하고 그안에 실행문을 줍니다. 그리고 함수 밖에 함수 실행문을 넣습니다.
 
매개변수함수는
함수을 선언하고 이름을 func라고 하는데 그안에 매개변수str를 주어 그 안에 실행문에 매개변수str를 넣어 줍니다. 그리고 함수 밖에 함수 실행문을 넣고 그 안에 실행하고자하는 문구를 넣습니다.
 
리턴함수
함수를 선언하고 이름을 func라고 하는데 안에 상수 str에 실행 문구를 저장합니다. 그리고 return으로 받아 함수실행을 중단하고 함수 밖으로 출력문으로 함수를 실행합니다.
 
 

09. 화살표 함수유형 4가지 작성

//선언
{
    func = () => {
        document.write("실행<br>");
    };
    func();
}
//익명
{
    const func = () => {
        document.write("실행<br>");
    };
    func();
}
//매개변수
{
    func = (str) => {
        document.write(str);
    };
    func("실행<br>");
}
//리턴
{
    func = () => {
        const str = "실행";
        return str;
    }
    document.write(func());
}
 
 
화살표 함수는 function이라는 함수 선언을 없애고 
함수선언 함수(){} 이였던 기존 방식에서 함수 = () => {} 으로 바꿀 수 있습니다.