[wecode] CodeKata Week1 Day2 - reverse

신혜린·2023년 1월 17일
0

wecode42

목록 보기
10/32
  • 2023.1.17(화) 코드카타 week1 day2

문제

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

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

예들 들어,
x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321


나의 답

const reverse = x => {
  const y = String(x).split(''); // 숫자열인 x인자를 문자열로 바꾸어 배열로 담아주었음
  const length = y.length; // 배열로 변환해준 y속 요소는 몇 개인지 세어줌
  let z = []; // 빈 배열 (숫자들의 순서를 거꾸로 담아주기 위함)
  let j = 0;
  let k = 1;

  if (y[0] !== '-') {  // "-"가 안 들어가는, 즉 양수일 경우
    for (i = length - 1; i >= 0; i--) { // 일의 자리 수부터 첫째자리 수까지
      z[i] = y[j]; // ex)1234; z[3]=y[0], z[2]=y[1] -> 순서를 바꿔줌
      j += 1; // i가 1씩 줄어드는 동안 j는 1씩 증가해야 거꾸로 순서가 바뀜
    }
  } else { // "-"가 들어가는, 즉 음수일 경우
    for (i = length - 1; i > 0; i--) { // 배열의 0번째 요소는 "-"이기 때문에 이를 제외하기 위해서 i>=0가 아니라 i>0를 적용
      z[i] = y[k];
      k += 1; // 여기까지는 j와 동일
      z[0] = '-'; 
      // 새로 만든 빈배열 z안에 0번째 요소인 "-"를 제외한 나머지 숫자들은 담겼기 때문에 
 	  // 마지막으로 "-"를 0번째 요소로 집어넣어줌
    }
  }

  const result = Number(z.join('')); 
  // 배열 속 요소들을 다시 하나의 문자열로 바꿔주고
  // 문자열을 숫자열로 변환

  return result;
};
console.log(reverse(-12340));

module.exports = { reverse };
profile
개 발자국 🐾

0개의 댓글