일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 20201016뉴스
- 경제뉴스
- 20201011뉴스
- encoding
- 알고리즘
- 기사
- 오늘의뉴스
- 뉴스
- 백준
- 크롤링
- 백준2225
- 뉴스헤드라인
- C++
- 20201015뉴스
- 헤드라인
- 20200615뉴스
- MySQL
- 20201013뉴스
- 파이썬
- 헤드라인기사
- json
- 헤드라인모음
- 헤드라인뉴스
- Python
- 20200816뉴스
- 코테
- LeetCode #Python #알고리즘 #코딩테스트 #interview
- 20201017뉴스
- 20201018뉴스
- 기사헤드라인
Archives
- Today
- Total
HelloCho
[Python] #7.Reverse Integer (Easy) 본문
문제 #7. Reverse Integer(Easy)
이 문제는 입력된 int값을 뒤집어서 값이 [-2^32 ~2^32-1] 값 사이에 존재하면 뒤집은 값을 그렇지 않을 경우 0을 출력하는 문제이다.
이 문제는 두가지 방법을 이용해서 문제를 해결했다.
첫 번째 방법은 interger 값을 str값으로 변환 후 뒤집는 방법을 사용했다.
class Solution:
def reverse(self, x: int) -> int:
if x < 0:
x = str(x)
x = int(x[0] + x[1:][::-1])
else:
x = int(str(x)[::-1])
if x > 2**31 or x < -2**31 :
return 0
return x
값이 음수일 경우에 부호값을 처리하기 위해서 x[0] 번째의 값을 따로 분리하고 그 외의 값을 뒤집어 합쳐준다.
값이 양수일 경우에는 값을 뒤집는다.
뒤집은 값이 [-2^32 ~2^32-1] 값 사이에 존재하면 뒤집은 값을 그렇지 않을 경우 0을 출력하도록 했다.
속도는 32ms, 메모리는 13.6 MB이다.
두 번째 방법은 str을 사용하지 않고 값을 변환하는 방법이다.
class Solution:
def reverse(self, x: int) -> int:
res = 0
flag = -1 if x <0 else 1
x = abs(x)
while x != 0 :
p = x % 10
x = x//10
res = res * 10 +p
if x > 2**31 or x < -2**31 :
return 0
return flag * res
공식은 다음과 같다.
res = res * 10 + p (여기서 p는 10으로 나눈 나머지 값)
단계적으로 살펴보면
ex) 123의 경우
1. p = 3, res = 0 ==> 0*10 + 3 = 3 res값에 3이 입력
2. p = 2, res = 3 3*10 + 2 = 32
반복하다보면 반대로 뒤집을 수 있다.
속도는 24ms, 메모리는 13.7MB이다.
'코테 > LeetCode' 카테고리의 다른 글
[Python] #2. Add Two Numbers(Medium) (0) | 2020.08.29 |
---|---|
[Python] #14. Longest Common Prefix(Easy) (0) | 2020.08.29 |
[Python] #13. Roman to Integer(Easy) (0) | 2020.08.26 |
[Python] #9.Palindrome Number (Easy) (0) | 2020.08.26 |
[Python] #1.Two Sum (Easy) (0) | 2020.08.26 |
Comments