일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- dfs
- C++
- 코딩테스트
- 서버
- 자바스크립트
- 코딩테스트 스터디
- JavaScript
- socket
- 문자열&연산자
- 구현
- BFS
- 구조체
- 메모리 배리어
- Server
- MemoryBarrier
- React
- 멀티스레드
- N과 M(2)
- 완전탐색
- 제로베이스
- 프론트엔드 스쿨
- 알고리즘
- map
- 제로베이스 프론트엔드 스쿨
- c#
- Algorithm
- 프로그래머스
- 백트래킹
- leetcode
- Today
- Total
Written
leetcode / 7. Reverse Integer / JavaScript 본문
https://leetcode.com/problems/reverse-integer/
Reverse Integer - LeetCode
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. Assume the environment does not allow you to store 64-bit in
leetcode.com
입력으로 주어지는 32비트 정수 x가 있습니다. 그리고 x를 뒤집은 숫자를 리턴합니다.
만약 x를 뒤집은 리턴값이 -2^31 보다 작거나 2^31 - 1 보다 크면 0을 리턴합니다.
Example 1:
Input: x = 123
Output: 321
Example 2:
Input: x = -123
Output: -321
Example 3:
Input: x = 120
Output: 21
Constraints:
- -2^31 <= x <= 2^31 - 1
x값이 음수인 경우를 처리하기 위해 flag변수를 만들고 음수인 경우엔 미리 -1을 곱하여 양수를 만듭니다.
또한 x값들을 저장하기 위한 배열도 하나 만들어두고 , String(x)를 통해 문자열로 먼저 변환합니다.
그리고 for문을 통해 하나씩 배열에 push하고 뒤에서 부터 꺼내면서 빈 문자열에 더하는 연산을 해줍니다.
이 때, 하나 조심할 점은 배열에서 pop()을하면 배열의 length가 계속 줄어들기 때문에 for문에 stack.length를
미리 받아온 변수에 넣어서 사용해야합니다 ! 분명 문제가 없다고 생각했는데 , 자꾸 답이 이상하게 출력되어서
찾아본 결과 그냥 stack.length를 for문에서 쓰고있어서 답이 올바르게 안나오고 있었습니다,,
마지막에는 flag변수를 확인해서 처음 x가 음수였으면 다시 -1을 곱해주는 작업과 , 조건을 만족하지 못하는 범위의
x면 return 0;을 하게끔 처리만 하면 어렵지 않게 답을 구할 수 있었습니다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
const stack = new Array;
let flag = true;
if (x < 0){
flag = false;
x *= -1;
}
const str = String(x);
for (let i=0;i<str.length;i++){
if ( i === str.length-1 && str[i] === '0'){
continue;
}
else{
stack.push(str[i]);
}
}
let ansNum ='';
let length = stack.length;
for (let i=0;i<length;i++){
const temp = stack.pop();
ansNum += temp;
}
ansNum = Number(ansNum);
const a1 = (2**31)*-1;
const a2 = (2**31) - 1;
if (flag === false){
ansNum *= -1;
}
if (ansNum < a1 || ansNum > a2){
return 0;
}
else{
return ansNum;
}
};
|
cs |
'알고리즘 문제풀이' 카테고리의 다른 글
69. Sqrt(x) / 70. Climbing Stairs / 8. String to Integer (atoi) / 코딩테스트 스터디 문제풀이 모음 (Leetcode) (0) | 2023.02.28 |
---|---|
leetcode / Unique Binary Search Tree II / JavaScript (0) | 2023.02.26 |
leetcode / 67. Add Binary / JavaScript (0) | 2023.02.21 |
leetcode / 66. Plus One / JavaScript (0) | 2023.02.21 |
스터디 4주차 / leetcode / Longest Palindromic Substring / JavaScript (0) | 2023.02.01 |