1013 Replit

기멜·2021년 10월 13일
0

알고리즘

목록 보기
2/4

isOddAndGreaterThanTwenty

문제내용: 숫자가 주어졌을때 주어진 숫자가 홀수이고 20보다 큰 경우에만 true를 반환합니다.

function isOddAndGreaterThanTwenty(num) {
  if(num % 2 === 1 && num > 20){
    return true
  }else{
    return false
  }
}
console.log(isOddAndGreaterThanTwenty(27))

module.exports = { isOddAndGreaterThanTwenty }

코드해석:
일단 if문을 쓴다. 그 다음 num % 2 === 1을 해주는데 이 뜻은 어떤 홀수 예: 27, 27이라는 숫자를 2로 계속 나누면 결국 1이 남는데 이 1은 그냥 숫자 1이 아니라 홀수라는 뜻이다. 그래서 === 1 해서 홀수 인걸 확인하고, && 로 num > 20 num이 20보다 크다 라는 코드를 적어주면 된다.
여기서 중요한 점은 return true를 "true"라고 적어주면 안된다. 이렇게 하면 문자열이 되어버려서 테스트 통과가 되지 않는다.

Or

문제내용: 인자로 주어진 expression1과 expression2는 boolean 타입입니다.
두 인자가 모두 false인 경우에는 false를 반환하며 그 이외의 경우에는 모두 true를 반환합니다.

function or(expression1, expression2) {
  if(expression1 !== true && expression2 !== true){
    return false
  }else{
    return true
  }

}

console.log(or(true, false))
module.exports = { or }

코드해석:
일단 if문을 쓰고 (expression1 !== true && expression2 !== true)로 expression1 !== true 랑 다르지!?! 라고 물어본 거에 "아닌데 같은데", 가 되어서 false가 되는거고. expression2 !== true 도 둘은 다르지!? 라고 물어보는데 이때는 "응 달라."가 되어서 true가 됩니다. 그래서 둘은 다르게 되어서 return false는 실행되지 않게 되는 겁니다. 그래서 최종적으로 true를 반환하게 되는데 여기에서 한가지 응용을 해보자면
false 값을 반환되게 하려면

function or(expression1, expression2) {
  if(expression1 == true && expression2 !== true){
    return false
  }else{
    return true
  }

}

console.log(or(true, false))
module.exports = { or }

이렇게 해주면 false 값이 나옵니다.

isEitherEvenAndLessThan9

문제내용:
함수의 인자로 숫자 두개가 주어졌을때 함수는 2가지 조건을 검사합니다.
우선 두 숫자 중 적어도 하나가 짝수인지 확인합니다.
그리고 두 숫자 모두 9보다 작은지를 확인합니다.
두 조건을 모두 만족하는 경우만 true를 반환합니다.

function isEitherEvenAndLessThan9(num1, num2) {
  if (num1 % 2 === 0 || num2 % 2 === 0 ){
  if (num1 < 9 && num2 < 9){
    return true
  } else {
    return false
    }
  }
  return false
}

console.log(isEitherEvenAndLessThan9(2, 4))
module.exports = { isEitherEvenAndLessThan9 }

중첩 if 문을 쓰는 문제였다. 그리고 || 또는 이라는 연산자를 써서 구현하는 문제였다. return false를 왜 써야하는지 맨 밖에 if문의 else 같은 느낌이라고 보면 됩니다.

이걸 이렇게도 줄일 수 있는 것 같다.

function isEitherEvenAndLessThan9(num1, num2) {
  if (num1 % 2 === 0 || num2 % 2 ===0)
  if (num1 < 9 && num2 < 9){
    return true
  }
  return false
}
module.exports = { isEitherEvenAndLessThan9 }

중괄호를 최대한 생략한 모습이다. else 도 생략이 가능하다.

profile
프론트엔드 개발자를 꿈꾸는 도화지 위를 달리는 여자

0개의 댓글