[Algorithm] 002

홍효정·2020년 10월 6일
0

Algorithm

목록 보기
5/6

문제

reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return해주세요.

x: 숫자
return: 뒤집어진 숫자를 반환!

예들 들어,
x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321




1

const reverse = x => {
  let ary = [];
  let s = String(x); // ['-1234']
  let n = s.split(""); // ['-', '1', '2', '3', '4']
  
  // -가 있는 경우
  if (n.indexOf("-") > -1) {
    for (let i = n.length - 1; i > 0; i-- ){ary.push(n[i]);}
    ary.unshift('-');
    let join = ary.join(''); // 배열 -> 문자열
    let answer = Number(join); // 문자열 -> 숫자열
    return answer;
  }
  
  // -가 없는경우
  n.reverse();
  let join2 = n.join('');
  let answer2 = Number(join2);
  return answer2;
  
}

인자에 -가 있는경우를 조건문으로 넣고 반복문으로 빈 배열에 거꾸로 push 한 후 배열 맨앞에 '-'를 집어넣고.. 배열을 문자열로 변환하고 문자열을 숫자열로 변환해서 리턴한다. -가 없는경우엔 split으로 만든 배열을 reverse해서 뒤집고, 문자열로 만들고 숫자열로 만들고 리턴한다. 메소드를 다 각자 변수에 선언, 할당 하다보니 변수가 많아지고 로직이 길어져서 복잡해진것같다.


2

const reverse = x => {
  let a = String(x);
  
  if (x > 0){
    let answer = a.split('').reverse().join('');
    return Number(answer);
  } else {
    let answer = a.substring(1).split('').reverse().join('');
    return Number(answer *= -1)
  }
  
}

다른분 코드 보고 수정한 코드. 먼저 음수인지 정수인지 확인해본다는 생각은 못했는데 역시 천재들밖에 없군... 그리고 이렇게 한 변수에 메소드를 여러개 때려박을수도 있다는것도 알게되었다! 🙄

profile
HHJ velog 🍔

0개의 댓글