본문 바로가기

Programming Language/JavaScript

[JavaScript]isOdd

항상 풀던 함수만들기 이다. 이번에는 조건이 추가되었다.

 

문제보기

더보기

문제

수를 입력받아 홀수인지 여부를 리턴해야 합니다.

입력

인자 1 : num

  • number 타입의 정수

출력

  • boolean 타입을 리턴해야 합니다.

주의 사항

  • 반복문(while)문을 사용해야 합니다.
  • for문 사용은 금지됩니다.
  • 나눗셈(/), 나머지(%) 연산자 사용은 금지됩니다.
  • 0은 짝수로 간주합니다.

한 40분을 고민 끝에 다음과 같은 해답을 내었다.

function isOdd(num) {
  let n = 0;
  if( num > 0){
    while ( n <= num ){
    n = n + 2;

    }
    if ( n === num + 2){
      return false
    }
    else if ( n === num + 1){
      return true
    }
  }
  else if ( num === 0 ){
    return false
  }
  else {
    while ( n >= num ){
    n = n - 2;

    }
    if ( n === num - 2){
      return false
    }
    else if ( n === num - 1){
      return true
    }
  }
  
}

막상 쓰고보니 원하는 출력은 나왔지만, 코드가 너무 난해하고 복잡하다.

 

아래는 모범답안이다.

function isOdd(num) {
  if (num < 0) {
    num = -num;
  }

  while (num >= 0) {
    if (num === 0) {
      return false;
    } else if (num === 1) {
      return true;
    }

    num = num - 2;
  }
}

내 코드와 차별점은 다음과 같다.

  • num의 음수처리를 위해 절댓값 개념을 사용한 것.
  • num에 마이너스(-)를 하여 숫자를 작게 생각한 것.
  • while 안에 조건문(if)를 넣은 것.

 

훨씬 가독성 좋고 깔끔하다. 나도 이 풀이를 반복하여 멋진 코드를 짤 수 있는 사람이 되어보자!