1357. 뒤집힌 덧셈
어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(X) = 1이다.
두 양의 정수 X와 Y가 주어졌을 때, Rev(Rev(X) + Rev(Y))를 구하는 프로그램을 작성하시오
입력 : 첫째 줄에 수 X와 Y가 주어진다. X와 Y는 1,000보다 작거나 같은 자연수이다.
출력 : 첫째 줄에 문제의 정답을 출력한다.
ex)
입력1 :
123 100
출력1 :
223
입력2 :
5 5
출력2 :
1
풀이
x, y = input().split()
x = int(x[::-1])
y = int(y[::-1])
print(int(str(x+y)[::-1]))
- 먼저 x, y를 입력받는다. x, y를 역순으로 만들기 위해 슬라이스를 사용하는데, 이는 시퀀스 자료형에만(리스트, 튜플, 문자열 등등) 적용되기 때문에 정수형으로 입력받지 않았다.
슬라이스를 사용할 때 인덱스 증가폭을 음수로 지정하면 요소를 뒤에서부터 가져올 수 있는데, 이를 이용하여 입력받은 문자열 x, y를 각각 역순으로 만들었다. 그리고 나서 역순으로 만든 x, y를 더한 값을 다시 역순으로 만들어 출력하는 문제이기 때문에 x와 y를 더할 수 있도록 정수형으로 변환해주었다.
이제 x, y는 모두 정수형이 되었는데, x와 y를 더한 값을 슬라이스를 사용해 다시 역순으로 바꿔야 한다.
위의 과정에서 설명했듯이 슬라이스는 시퀀스 자료형에만 적용되기 때문에, x+y 값을 str()을 사용하여 문자열로 변환한 뒤에 슬라이스를 사용하여 역순으로 변경했다.
이 값을 출력하면 답이 나올 것 같지만, 두 번째 예제를 보면 5 + 5 = 10 이고 이를 역순으로 바꾸면 01 이 출력되는 오류가 발생한다.
이런 경우에 01이 아닌 1을 출력하기 위해 다시 int()를 사용하여 해당 값을 정수형으로 변환한 뒤 출력했다.
'코딩테스트 문제풀이(Python)' 카테고리의 다른 글
백준 10987번 문제풀이 (파이썬) (0) | 2022.05.21 |
---|---|
백준 10809번 문제풀이 (파이썬) (0) | 2022.05.21 |
백준 2902번 문제풀이 (파이썬) (0) | 2022.05.20 |
백준 2744번 문제풀이 (파이썬) (0) | 2022.05.19 |
백준 2743번 문제풀이 (파이썬) (0) | 2022.05.18 |