Week 3 - REPLIT 조건문 & Array 틀린 문제 정리 | 자바스크립트

grl pwr·2022년 5월 8일
0

🌈 자바스크립트 조건문 & 배열 🤓 틀린 문제 정리


06. isOddAndGreaterThanTwenty

isOddAndGreaterThanTwenty 함수를 작성하세요.

  • 숫자가 주어졌을때 주어진 숫자가 홀수이고 20보다 큰 경우에만 true를 반환합니다.
// 정답코드
let output = isOddAndGreaterThanTwenty(13);
let output2 = isOddAndGreaterThanTwenty(27);

console.log(output); // --> false
console.log(output2); // --> true

힌트)

  • 두 가지 조건을 한번에 판별하려면 AND 조건연산자(&&)를 쓰거나, if 문을 중첩해서 작성해야합니다.

🤔❓ 왜 true로 출력되는데 test 4에서 막히지?
💡❗️ if (num % 2 == 1 && num > 20) { (아래 코드 참조)
홀수이면 num % 2 == 1이라고 해야되는데 나는 num % 2 == 0이라고 했다.. 알고리즘 배울 때, 짝수 홀수를 몇 번을 했는데..


function isOddAndGreaterThanTwenty(num) {

  if (num % 2 == 1 && num > 20) {   // *** 이 부분 
    return true;
  } else {
    return false;
  }
}

let output = isOddAndGreaterThanTwenty(33);

console.log(output);

module.exports = { isOddAndGreaterThanTwenty }

🌟 중요 🌟
짝수는 2로 나누면 0으로 딱 떨어지기 때문에
num % 2 == 0이다
홀수는 2로 나눌 때 무조건 1이 남는다. 그러므로,
num % 2 == 1이다


07. whichGrade

whichGrade 함수를 작성하세요.

  • 점수가 주어졌을때 주어진 점수에 따라 서로 다른 등급을 문자열로 반환합니다.
  • (100 이하 ~ 90 이상) --> 'A'
  • (89 이하 ~ 80 이상) --> 'B'
  • (79 이하 ~ 70 이상) --> 'C'
  • (69 이하 ~ 60 이상) --> 'D'
  • (59 이하 ~ 0 이상) --> 'F'
  • 점수가 100을 초과하거나 0 미만인 경우 --> 'INVALID SCORE'
    주의)

  • 두가지 조건을 작성하는 경우 &&연산자가 필요합니다.
  • &&연산자는 다음과 같이 작성해야 한다는 점을 반드시 기억해두세요!
// 몸무게가 45 보다 크고 60보다 작은 경우 
45 < weight && weight < 60

🤔❓ tests는 모두 패스했는데 부등호의 위치를 바꿔도, 이것저것 만져도 왜 자꾸 console창에 'INVALID SCORE'라고 출력되지?

// 정답코드 아님 주의. 정답코드는 바로 아래 참고
function whichGrade(score) {

  if (90 <= score && score <= 100) {
    return 'A';
  } else if (80 <= score && score <= 89) {
    return 'B';
  } else if (70 <= score && score <= 79) {
    return 'C';
  } else if (60 <= score && score <= 69) {
    return 'D';
  } else if (0 <= score && score <= 59) {
    return 'F';
  } else {
    return 'INVALID SCORE';
  }
}

let score = 60;
console.log(whichGrade())

module.exports = { whichGrade }

💡❗️ 위 코드처럼 console.log(whichGrade()) 이렇게 쓰면 안된다.
반드시 함수 괄호 안에 whichGrade(여기에) 값을 넣어야 한다


function whichGrade(score) { // 함수=whichGrade, 함수의 매개변수=score

  if (90 <= score && score <= 100) {
    return 'A';
  } else if (80 <= score && score <= 89) {
    return 'B';
  } else if (70 <= score && score <= 79) {
    return 'C';
  } else if (60 <= score && score <= 69) {
    return 'D';
  } else if (0 <= score && score <= 59) {
    return 'F';
  } else {
    return 'INVALID SCORE';
  }
}
// 방법1 - 반드시 함수(whichGrade)와 함수의 매개변수(score)를 같이 출력
let score = 60;
console.log(whichGrade(score))

// 방법2 - 
console.log(whichGrade(60))

// 이 밑에 코드는 그냥 냅두기
module.exports = { whichGrade }

08. or

or 함수를 작성하세요.

  • 인자로 주어진 expression1과 expression2는 boolean 타입입니다.
  • 두 인자가 모두 false인 경우에는 false를 반환하며 그 이외의 경우에는 모두 true를 반환합니다.
let output = or(true, false); 
console.log(output); // --> true;

let output2 = or(false, false); 
console.log(output2); // --> false;

주의)

  • || 연산자를 사용하지 마세요.
  • 대신 ! 와 && 연산자를 사용하세요.

🤔❓그래서 도대체 or를 뭐하라는거지? 문제가 요구하는 사항을 이해하지 못했다. 스터디 팀원들의 도움으로 궁금증 해결

function or(expression1, expression2) {

  if (expression1 != true)
    
}

or(true, false)


module.exports = { or }

💡❗️


07. slice 2

array 감옥에 갇힌 2를 구해주세요.

  • 단, slice 메서드를 사용해야 하며, slice 메서드 괄호 안에는 음수만 들어갈 수 있습니다.
let prisoners = [[0, 1],[1,2],[0,0]];
saveNumberTwo(prisoners) // 2

🤔❓어떻게 let answer = temp[0][1]이 숫자 2를 출력하는거지?

// 정답코드
function saveNumberTwo(prisoners) {

  let temp = prisoners.slice(-2) 

  // slice 메서드의 괄호 안에 음수만 넣어주세요 
  let answer = temp[0][1]
  
  // 변수 answer에 특정한 값을 대입해주세요.
  return answer;
}
let prisoners = [[0, 1],[1,2],[0,0]];
console.log(saveNumberTwo(prisoners))

module.exports = { saveNumberTwo };

💡❗️slice 개념을 잘못 알고 있었다.
slice(-1)은 뒤에서 첫 번째 element를 추출하고
slice(-2)는 뒤에서 두 번째 element만 추출하는 것으로 이해했으나 틀렸다.
slice(-2)를 하면 뒤에서 두 번째 요소만 추출하는 것이 아니라 뒤에서 두 번째 요소를 포함한 그 뒤 element를 모두 포함해서 추출하는 것이다.

let prisoners = [[0, 1],[1,2],[0,0]]; //일 때,
  let temp = prisoners.slice(-2) //을 하면
  
  // prisoners = [1,2],[0,0]; 이렇게 추출이 된다
  // 여기서 '2'를 뽑아내려면
  let asnwer = temp[0][1]
  • 확인이나 검증하기 위해서는 어떤 요소이든 console.log를 이용해서 출력해보자

09. filter 1

fruits 라는 배열이 있습니다. 'ap'가 들어간 과일들로 이루어진 새로운 배열을 filter()를 이용하여 반환해주세요.

결과는 아래와 같아야 합니다.

[ 'apple', 'grapes' ]

힌트: includes()를 사용해보세요


// by default
let fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
//아래의 함수를 완성해주세요.
function filtered () {
}
let fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];

//아래의 함수를 완성해주세요.
function filtered (fruits) {
  
  let result = fruits.filter();
    return fruits.includes('ap');
}



console.log(result);


module.exports = { filtered };

11. concat

num 배열안의 요소들을 concat()을 이용해서 하나의 배열로 합쳐지게 해주세요.
아래와 같은 결과가 나와야 합니다.

(힌트: array에서 index로 접근)

[ 11, 12, 13, 14, 15, 16, 17, 18, 19 ]

// 정답코드
let num = [[11, 12, 13], [14, 15, 16], [17, 18, 19]]; 

//아래의 함수를 완성해주세요. 
function makeNewArr () {

    return num[0].concat(num[1]).concat(num[2]) //***
}
console.log(makeNewArr())

module.exports = { combineMonth, makeNewArr };

💡❗️

https://replit.com/@wecode-pre-JS/06-isOddAndGreaterThanTwenty-BohyunPark1#index.js

https://replit.com/@wecode-pre-JS/07-whichGrade-BohyunPark1#index.js

https://replit.com/@wecode-pre-JS/08-or-BohyunPark1#index.js

https://replit.com/@wecode-pre-JS/07-slice-2-BohyunPark1#index.js

https://replit.com/@wecode-pre-JS/09-filter-1-BohyunPark1#index.js:6:19

profile
4대륙 개발자

0개의 댓글