Rev(x)가 어떤 수 x의 모든 자리를 역순으로 만드는 함수일 때,
Rev(Rev(x) + Rev(y))를 구하는 문제이다.
정수형(int)으로 수를 뒤집는 것보다..
문자형(str)으로 수를 뒤집는 게 훨씬 간단하다.
다만 문자열로 수를 뒤집고 난 뒤,
0으로 끝나는 값들을 잘 처리해 주어야 한다.
예를 들어, 100을 뒤집으면 001이다.
그런데 수는 0으로 시작하지 않기 때문에 001을 1로 처리해 주어야 하는 것이다.
이러한 이유 때문에 처음에는 Rev(x)의 인자와 리턴 값을 전부 문자형으로 처리했다.
그런데 구해야 하는 것이 Rev(x) + Rev(y)의 Rev 값이다.
즉, Rev를 통해 반환된 값을 연산해야 한다.
그래서 인자와 리턴 값 모두 정수형으로 처리하고,
Rev() 함수 안에서만 str 변환을 활용했다.
코드(정답)는 다음과 같다.
# 1357
import sys
def rev(num):
rev_num = str(num)[::-1]
for i in range(len(rev_num)):
if rev_num[i] != 0:
return int(rev_num[i:])
x, y = sys.stdin.readline().split()
print(rev(rev(x) + rev(y)))
다른 분들의 풀이를 참고하다..
파이썬의 int() 메서드만을 활용해서 불필요한 0을 제거할 수 있음을 깨달았다.
str_num = '001'
int_num = int(str_num)
print(int_num) # 1
이를 활용하면 더 간단하게 문제를 해결할 수 있다.
코드(정답)는 다음과 같다.
import sys
def rev(num):
return int(str(num)[::-1])
x, y = sys.stdin.readline().split()
print(rev(rev(x) + rev(y)))