숫자를 뒤집어주는 함수 만들기

DongHee Kim·2021년 8월 19일
1

Algorithm

목록 보기
9/12
post-thumbnail

문제

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

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

📌 예시
x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321

풀이

사고의 흐름

Step.1 : 숫자를 뒤집는 함수 만들기

먼저 인자로 받는 숫자의 위치를 반대로 바꾸려면, 숫자 하나하나를 string으로 만들고 반대 순서로 정렬해야했다.

따라서 우선 인자로 받는 숫자를 x라 하고,
1) toString()으로 숫자 x를 string으로 만든 뒤
2) split으로 자릿수마다 분리하고,
3) 분리된 값을 반대순서로 정렬하는 reverse()함수를 사용했다.


4) 1~3의 과정을 하나의 코드로 작성해서, 반대 순서로 정렬된 각 분리된 숫자를 값으로 가지는 배열 a를 만들었다.

let a = x.toString().split("").reverse()

5) join() 메서드로 a 배열의 요소를 연결해 하나의 문자열로 만들었다.
이 문자열 값은 reverseA라고 두었다.

let reverseA = a.join("")

Step.2 : 변수 해결하기

문제의 예시를 보면, 0은 숫자의 앞자리로 올 때 사라져야 하고
-는 순서가 바뀌지 않고 반환된다. (ex. 1230 -> 321, -1234 -> -4321)

step 1까지의 과정을 완료하면 1234 > 4321 까지는 잘 나오지만, string인 관계로 1230 > 0321, -1234 > 4321-과 같이 나왔다. 0은 사라져야 하고.. -는 맨 앞에 나와야하고요..?

예상치못한 변수인 0과 -를 해결하기 위해 페어 분과 머리를 싸매고 고민하다가, if문을 활용해보자는 생각이 떠올랐다.

1) 0을 없애기 위해 parseInt(reverseA)로 정수를 반환하고,
2) 음수값을 판별하기 위해 reverseA에 -가 존재하는지 조건문을 걸었다.
true일 경우 parseInt("-" + reverseA) 를 리턴, false이면 그냥 parseInt(reverseA)를 반환

const reverse = x => {
  let a = x.toString().split("").reverse()
  let reverseA = a.join("")
  if(reverseA.includes("-") === true) {
    return parseInt("-" + reverseA)
  } else {
    return parseInt(reverseA)
  }
}

그랬더니 짜잔~ 모든 테스트를 통과하는 정답이 나왔다!
페어분과 기쁜 마음으로 마무리


느낀점

문제 해결을 위해 각각의 자리수를 배열로 변환하는 건 공통적으로 생각하고,
join메서드는 페어분이, includes메서드는 내가 생각해내며 핑퐁을 통해 문제를 해결했다. 함께 협업하며 문제를 해결해내 뿌듯하고 기억에 남는 경험! ✨

profile
일상의 성실이 자존감을 만드는 성취주의자

2개의 댓글

comment-user-thumbnail
2021년 8월 21일

사고의 흐름을 보니 정리도 잘되고 좋은 것 같아요!
저도 알고리즘 하면서 많은 것을 얻어가기 위해 한 스텝 두 스텝! 정리 잘 해봐야겠습니다.
좋은 글 감사합니다!

1개의 답글