반응형
[PYTHON] leetcode reverse Integer 문제풀이
이번문제로 easy 라 그런지 그다지 어렵지 않은듯 했지만, 또! 또! 문제를 잘못읽어서 한시간 정도 낭비했다. 문제는 x 라는 수가 주어지면 한 숫자씩 거꾸로 만들어서 return 하는 간단한 문제이다. 예를 들어 123이 주어지면 321로, 1020이 주어지면 0으로 시작하는 것을 제외하고 201로 바꾸어 주는 문제이다. 다만 조건이 하나 있는데 바뀐 숫자가 (-2^31) ~ (2^31)-1 의 범위를 벗어나게 되면 0을 return 해야 한다. 이걸 문제에서 열심히 안읽고 왜 0이 답이라고 했는지 한참을 해맸다. 오죽하면 문제가 틀린것 같다는 구글링을 하고 있었으니 -_-
최적화는 가능하겠지만, 일단 처음에 푼 코드를 올려본다. 너무 직관적인 코드라 설명은 없어도 될 것 같다.
class Solution:
def reverse(self, x: int) -> int:
originalTxt = str(x)
returnTxt = ''
print(originalTxt)
check1stZero = 1;
if(originalTxt[0] == '-'):
returnTxt = '-'
for i in range(1, len(originalTxt)):
if(originalTxt[len(originalTxt) - i] == 0 and check1stZero == 1):
#do nothing
print("do nothing")
elif(originalTxt[len(originalTxt) - i] != 0):
check1stZero = 0;
returnTxt = returnTxt + originalTxt[len(originalTxt) - i]
elif(originalTxt[len(originalTxt) - i] == 0 and check1stZero == 0):
returnTxt = returnTxt + originalTxt[len(originalTxt) - i]
else:
print("do nothing")
else:
for i in range(len(originalTxt)):
if(originalTxt[len(originalTxt) - 1 - i] == 0 and check1stZero == 1):
#do nothing
print("do nothing")
elif(originalTxt[len(originalTxt) - 1 - i] != 0):
check1stZero = 0;
returnTxt = returnTxt + originalTxt[len(originalTxt) - 1 - i]
elif(originalTxt[len(originalTxt) - 1 - i] == 0 and check1stZero == 0):
returnTxt = returnTxt + originalTxt[len(originalTxt) - 1 - i]
print(returnTxt)
returnInt = int(returnTxt)
if returnInt in range(-2**31, 2**31 - 1):
print("do nothing")
else:
return 0
return returnInt
for 문과 if 문을 주구장창 쓴 아주 전형적인 초보자스타일의 코드이다. 다른 사람들이 푼 솔루션을 보면 비트연산으로 굉장히 짧은 코드가 나오던데 한번 시간내서 분석을 해 봐야 겠다. 무슨 3~4줄만에 코드를 완성시켜 버리니 나는 아직 상대가 안된다.
반응형
'python' 카테고리의 다른 글
[PYTHON] leetcode Richest Customer Wealth (easy) 문제풀이 (0) | 2021.03.19 |
---|---|
[PYTHON] if 문 논리연산, 같다 다르다, 크거나같다 등 (0) | 2021.03.16 |
[PYTHON] 텍스트로 만드는 str(), 숫자로 만드는 int() (0) | 2021.03.16 |
[PYTHON] leetcode running sum of 1d array 문제풀이 (0) | 2021.03.16 |
[PYTHON] list 선언하기, 배열 array 선언 (0) | 2021.03.16 |
댓글