본문 바로가기
오답노트

오답노트01

by 코터틀 2022. 10. 4.
반응형

Javascript Test

오답노트01


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

i = 10, hap = 0으로 시작하여 while(i > 1)을 만족하는 10~1까지 i를 대입했을 때,
3으로 나눈 나머지가 1인 숫자는 10, 7, 4로 hap += i에 대입한 총합은 21이 됩니다.

function func(){
    let i = 10, hap = 0;
    while(i > 1){
        if(i % 3 == 1){
            hap += i;
        }
        i--;
    }
    document.write(hap);
}
func();
결과 확인하기
21

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

a에 빈배열을 저장하고, for문을 사용하여 1~5까지 a 변수(빈배열)에 저장합니다.
배열 a의 index값 2를 출력하면 a = [1, 2, 3, 4, 5]에서 index값 2에 해당하는 3이 출력됩니다.

function func(){
    let a = [];

    for(i=1; i<=5; i++){
        a += [i];
    }
    document.write(a[2]);
}
func();
결과 확인하기
3

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

배열 1~9까지를 a 변수에 저장, cnt = 0으로 시작하여 for문을 통해 i = 0 부터, a변수 배열의 길이 값의 미만까지 범위를 설정합니다.
if(배열 a의 인덱스값 위치의 수를 2로 나눈 나머지가 0이라면) cnt에 1을 더하도록 합니다.
1, 3, 5, 7이 4개의 인덱스값이 조건에 성립하므로, cnt는 1이 4번 더해진 4가 됩니다.

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()
결과 확인하기
4

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

result변수에 1을 저장, for문을 사용하여 i = 1부터 exp값 미만까지로 설정합니다.
result = result * i를 처리하고, result + data값이 출력되도록 합니다.
data, exp변수에 1, 5 값을 대입하면 for문이 1~4까지로 지정되어 순서대로 1, 2, 6, 24가 나오므로 최종값인 24가 result값이 됩니다.
최종값 24에 data = 1을 더해주면 정답은 25가 출력됩니다.

function func(data, exp){
    let result = 1;
    for(i=1; i < exp; i++){
        result = result * i;
    }
    document.write(result + data);
}
func(1, 5);
결과 확인하기
25

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

변수 a에 배열을 저장, value 변수에는 0 을 저장합니다. for문을 통해 i = 0부터 배열a의 길이값까지 범위를 지정합니다.
if(배열 a의 인덱스값 i에 위치한 수가 2가 아니라면) value값에 1씩 더해주도록 합니다.
[2, 3, 2, 4, 5, 6, 7, 2, 3, 3, 2] 총 7개 이므로, value값은 1을 7번 더한 7이 출력됩니다.

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();
결과 확인하기
7

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

변수 i, j에 0을 저장, for문을 사용하여 i = 0부터 8이하까지 i값의 범위를 지정합니다.
0부터 8을 모두 더하고, 최종값에 +1한 j값이 출력됩니다.
(0부터 8까지 모두 더하면 36, 36 + 1 = 37)

function func(){
    let i, j = 0;

    for(i=0; i<=8; i++){
        j += i;
    }
    document.write(j + 1);
}
func();
결과 확인하기
37

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

a, b, c, d 변수에 각 값을 저장, 8 - 2 * 3 = 2 값으로 a값을 나누면 6이 됩니다.

function func(){
    let a = 12, b = 8, c = 2, d = 3;
    a /= b - c * d;
    document.write(a);
}
func();
결과 확인하기
6

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

a, b, c 변수에 각 저장값으로 result에 저장할 값을 계산합니다.
(물음표( ? ), 조건문이 참(truthy)일 경우 실행할 표현식, 콜론( : ), 조건문이 거짓(falsy)일 경우 실행할 표현식)
10 < 20이 '참'일 경우 20/10 = 2가 출력 '거짓'일 경우 30이 출력됩니다.

function func13(){
    let a, b, c, result;
    a = 10;
    b = 20;
    c = 30;
    result = a < b ? b/a : c;
    
    document.write(result);
}
func13();
결과 확인하기
2

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

a, sum 변수에 0을 저장, while문을 사용 a는 10미만으로 범위를 지정합니다.
a에 1을 더하고, if(a 나누기 2의 나머지 값이 1이라면) 조건에 성립하는 값을 건너뜁니다.
sum 변수에 조건에 부합하지 않는 나머지 a값을 모두 합한 값을 저장, 출력합니다.
2, 4, 6, 8, 10값이 continue문을 통과하여 이 값을 모두 더하면 30이 sum값이 됩니다.

function func(){
    let a = 0, sum = 0;
    while(a < 10){
        a++;
        if(a % 2 == 1) continue;
        sum += a;
    }
    document.write(sum);
}
func();
결과 확인하기
30

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

i, sum 변수에 0을 저장, while문을 사용 script를 따라 계산하면 1234 6789를 모두 더한값이 sum이 되어 40이 출력되는 것 같지만,
딥페이크로 while문의 조건으로 0이 되어있으므로, undefined 또는 0이 출력됩니다.ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

function func(){
    let i = 0, sum = 0;
    while(0){
        i++;
        if(i > 10) break;
        if(i % 5 == 0) continue;
        sum += i;
    }
    document.write(sum);
}
func();
결과 확인하기
0 또는 undefined

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

result변수에 0을 저장, for(i = 0부터, arrSubject의 길이값까지 범위 지정)
result = Number(배열 arrSubject의 값을 모두 더함)
result값을 num 변수에 넘겨주고 함수를 종료시킵니다.
전역변수 arrSubject 변수에 배열을 저장, result 변수에 함수 test(매개변수)값을 저장 후 출력합니다.

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

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

함수와 매개변수를 이용한 형태로 a, b, c값에 2, 5, 10을 대입하여 answer변수 값을 찾는 문제입니다.
if(2가 5보다 작다면) answer = 2가 되고 아니라면 answer = 5가 됩니다. 조건이 성립하므로, answer = 2가 됩니다.
if(10이 위의 answer값인 2보다 작다면) answer = 10이 됩니다. 조건이 성립하지 않으므로, answer = 2가 유지됩니다.
최종적으로 answer값은 2가 됩니다.

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);
결과 확인하기
2

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

n값에 178을 대입하고, 변수 answer = 178/12를 반내림한 값을 저장합니다.
함수를 종료, 출력하면 14.83333에서 반내림한 14가 출력됩니다.

function func(n){
    let answer;
    answer = Math.floor(n/12);
    return answer;
}
document.write(func(178));
결과 확인하기
14

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

for of문을 사용 if(x값중 문자열'w'와 일치하지 않는 값이 있다면) answer += 'w'와 일치하지 않는 문자열을 #으로 변경
아니라면 answer += x(기존값)가 됩니다. 함수를 종료시키고, 전역변수 str에 문자열'webstoryboy'를 저장시킵니다.

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. 다음의 결괏값을 작성하시오

변수 answer = 0 값을 저장, for of문을 사용(매개변수 s값(element)을 변수 x에 불러옴)
if(x가 매개변수t(index값)와 엄격하게(변수타입까지) 일치하지 않다면) answer에 1씩 더해줍니다.
t는 0 ~ 10까지의 index값을 갖으므로, 0부터 1씩 더하는 반복문을 10번 반복하여 최종 answer값은 10이 됩니다.

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'));
결과 확인하기
10

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

변수 answer에 빈 문자열을 저장, for of문을 사용하여 if(x값이 x의 대문자 변환값과 일치한다면)
대문자를 소문자로 변경, 아니라면 소문자로 변경하여 출력되도록 합니다. 즉, 대.소문자가 반전되어 출력됩니다.

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"));
결과 확인하기
WEBsTORYboy10

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

변수 answer에 빈 배열을 저장, 문자열 메서드를 사용하여 매개변수로 넘겨받은 12345값을 숫자타입을 toString()메서드로 문자타입으로 변경,
split('')메서드로 각각의 문자로 배열화 시킵니다. 다음 reverse()메서드로 배열을 역순으로 정렬하고
map(val -> parseInt(val))메서드를 사용하여 문자열 element값을 숫자로 바꾸어 반환합니다.

function solution(n) {
    var answer = [];
    answer = n.toString().split('').reverse().map(val => parseInt(val));
    return answer;
}
document.write(solution(12345));
결과 확인하기
5,4,3,2,1

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

변수 answer에 빈배열을 저장, 변수(상수) div에 arr(element).filter(el값을 divisor(index값)으로 나눈 나머지가 0인 값)을 저장합니다.
([1, 2, 3, 4, 5] % 2) == 0 조건이 성립하는 값은 2, 4로 2개가 있습니다.)
answer = 2 > 0 ? 2, 4 : [-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;
}
document.write(solution([1, 2, 3, 4, 5], 2));
결과 확인하기
2, 4

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

변수 answer에 0을 저장, for(i = 0 부터 10 미만까지 범위를 지정)
if(numbers 배열에 포함되지 않은 숫자 i값) 조건에 성립하는 모든 값을 더함
5와 9가 배열에 없는 i값으로 더하면 14가 나옵니다.

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]));
결과 확인하기
14

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

for(i = 1부터 10 미만까지 범위를 지정) if(10 나누기 i의 나머지 값이 1일 때) i값을 반환합니다.
3, 9 두개의 숫자가 있지만, 3에서 리턴값 함수로 반복문이 종료되어 답은 3이 됩니다.

function solution(n) {
    for (let i = 1; i < n; i++) {
        if (n % i === 1) return i;
    }
}
document.write(solution(10));
결과 확인하기
3
반응형

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

오답노트03  (2) 2022.10.07
오답노트02  (4) 2022.10.04

댓글


광고 준비중입니다.