[Leet Code] Reverse Integer

Hemudi | Hemdi·2021년 11월 26일
0

🧨 코딩테스트

목록 보기
15/19
post-thumbnail

주어진 정수를 반대로 뒤집어서 반환하는 문제


✳️ 제한사항


✳️ 예시

Input: x = 123
Output: 321

Input: x = -123
Output: -321

Input: x = 120
Output: 21

Input: x = 0
Output: 0


✳️ 내가 푼 코드

var reverse = function(x) {
    const numStr = Math.abs(x).toString();
    let resultStr = '';

    for(let index = numStr.length-1; index > -1; index--){
        if(numStr[index] === '0' && resultStr.length === 0) continue;
        resultStr += numStr[index];
    }

    if(x < 0){
        resultStr = '-' + resultStr;
    }

    if(!checkRange(resultStr)) return 0;
    return resultStr;
}

let checkRange = function(value) {
    if(value < Math.pow(-2, 31) || value > Math.pow(2, 31) - 1) return false;
    return true;
}

✳️ 생각 정리

  • 순회해서 뒤집을라고 숫자를 절대값을 구한 뒤 문자열로 변환했다.
  • 문자열로 변환한 뒤에 뒤에서부터 결과값 변수 resultStr 에 이어붙이는데 끝이 0인 경우를 무시하기 위해 if 문을 하나 썼다.
  • 그 뒤에 음수 처리를 하는데 - 부호를 판별하는 로직을 넣기 귀찮아서 그냥 초반에 절대값으로 변환해서 전부 처리하고 마지막에 원본 값(x)이 음수인지 판별해서 음수면 앞에 - 붙여주는 식으로 처리했다.
  • 이렇게 한 뒤 오 완벽하다 생각하고 제출했는데

    ㅠㅠ...범위 땜에 빠꾸먹음...
  • 그래서 급하게 checkRange 함수를 추가해줬다.
  • 앞으로 모든 문제들의 제한사항에 따라 범위를 체크하는 로직을 넣어줘야 할지 고민...
  • 그리고 다른 사람들 코드를 봤는데...배열을 거꾸로 뒤집어주는 reverse() 함수를 사용해서...3줄로 해결한 코드를 봤다...
profile
'햄디'로 현재 코드스쿼드 코코아 과정 수강 중 💻 (티스토리로 이전)

0개의 댓글

관련 채용 정보