[Algorithm] Day 2

offdutybyblo·2020년 6월 21일
0

Algorithm

목록 보기
2/2

문제

나의 코드

let x = 1234120

const reverse = (x)=>{
  let result = [];
  let str_x = x.toString();
  let a = ""
  
  if (x<0){
    for(let i=str_x.length-1; i>=0; i--){
    result.push(str_x[i])
     a = '-'+result.join('')
    }
   	return Number(a.slice(0,a.length-1))
    
    }else if(str_x[str_x.length-1]===0) {
      	for(let i=str_x.length-1; i>=0; i--){
      	result.push(str_x[i])
      	a = Number(result.join(''))
    }
    	return a
      
  } else if (x>0){
       	for(let i=str_x.length-1; i>=0; i--){
  		result.push(str_x[i])
       	a = Number(result.join(''))
 	}
      	return a
      
  } else if (x === 0){
      return 0;
  	}
}

모범 코드

function reverse(x) {
  let minus = false;
  
  if (x < 0) {
      x *= -1;
      minus = true;
  }
  
  let numText = x.toString();
  let result = '';
  
  for (let i = numText.length-1; i >= 0; i--) {
      result += numText[i];
  }
  
  result = minus ? result * -1 : Number(result);
  
  return result;
}

반성의 시간

  • 근본적인 문제에 대한 생각보다는 한 줄 한 줄 해결하는 것이 목표가 되어서 코드가 깔끔하지 못하고 자꾸 길어진다. 주의하자
  • 이 문제의 핵심은 0보다 작은 숫자를 어떻게 다루는지이다. '-'를 붙일 생각을 하다니...
  • 수학적으로 접근이 필요하다. 다양한 방향에서 접근하도록 노력하자
profile
Front-End Devleoper 일껄요?

0개의 댓글