일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- HTML
- 자바스크립트 알고리즘 문제
- 제로베이스
- lodash
- JavaScript
- til
- Baekjoon
- 자바스크립트 알고리즘
- 타입스크립트
- NPM
- stack문제
- react
- 자바스크립트
- 알고리즘문제풀이
- 프로그래머스
- 리액트
- 자바스크립트 문제
- 자바스크립트 문제풀이
- leetcode
- CSS
- Next.js13
- leetcode문제풀이
- 자바스크립트코딩테스트
- 자바스크립트 문제 풀이
- 리액트쿼리
- 프론트엔드
- Next
- next13
- JS
- 자바스크립트 연결리스트
- Today
- Total
코드노트
Leetcode 7. Reverse Integer 자바스크립트 문제 풀이 본문
문제 설명
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.
부호 있는 32비트 정수 x가 주어지면 숫자가 반전된 x를 반환합니다.
x를 반전하면 값이 부호 있는 32비트 정수 범위 를 벗어나면 0을 반환합니다.
var reverse = function (x) {
let y = x;
if (x < 0) x *= -1;
let str = String(x).split("").reverse().join("");
if (y < 0) str = str * -1;
if (str < -2147483648 || str > 2147483647) return 0;
return str;
};
- 문제는 어렵지 않았다. 숫자가 변수로 들어오면 reverse하여 출력하면 된다.
- 단 조건은 32비트 정수범위를 벗어나면 0을 return한다.
- 우선 들어오는 변수값 x를 y변수에 저장해둔다. (x가 음수면 양수로 바꿔줘야하기 때문에 값을 저장해두었다. 원본이 사라진다)
- 만약 x가 음수이면 양수로 바꿔준다.
- 그리고 숫자를 문자로 바꿔주고 split.reverse.join으로 다시 해주면 숫자는 반대로 출력이 된다.
- 여기서 만약 x값을 저장해둔 y값이 음수라면 -1을 곱해주어 -로 바꿔준다.
- 그리고 마지막 반전한 값이 32비트 정수 범위를 벗어났는지 확인하고 0을 리턴하는 조건을 넣어주었다.
다른 풀이
var reverse = function(x) {
//문자열로 반전
let reversed = Math.abs(x).toString().split('').reverse().join('');
// reversed값이 uint32 범위 내에 있는지 확인하고 int32는 확인할 필요가 없다.
// 나중에 논리에서 뺴기 기호를 고려하기 때문에 양수만 확인한다.
if(reversed > 2 ** 31 - 1 ) return 0;
// 빼기 기호가 있으면 확인하고 추가해준다.
return Math.sign(x) * reversed
};
- 처음에 abs를 통해서 절대값으로 만들어서 풀었으면 코드를 더 줄였을 수도 있었다.
- 그리고 32비트 값을 나는 정수로 범위를 나타내었는데 나중에 빼기기호를 넣기 때문에 양수만 확인하면 되는것도 좋은 방법이였다.
- sign을 사용하지 않았어서 생각조차 못했던 풀이였다.
자바스크립트에서 메서드들을 다시 한번 돌아볼필요가 있다고 느꼈다.
내가 풀던 코드들에서 사용안했던 것들이라 놓치고 있는것들도 많이 있는거 같다.
'Code note > 자바스크립트 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 최솟값 만들기 자바스크립트 풀이 (0) | 2022.09.29 |
---|---|
LeetCode 8. String to Integer (atoi) 자바스크립트 문제 풀이 (0) | 2022.09.27 |
LeetCode 6. Zigzag Conversion 자바스크립트 문제 풀이 (0) | 2022.09.24 |
자바스크립트 스택 알고리즘 문제 풀이, 괄호 계산 (0) | 2022.09.24 |
자바스크립트 스택 문제 풀이 정리, 기린의 시야 (0) | 2022.09.22 |