개요
LeetCode | |
문제 명 | Reverse Integer |
난이도 | Medium |
체감 난이도 | Easy |
풀이 시간 | 15분 정도 |
문제 설명
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 integers (signed or unsigned).
주어진 32비트 정수 x의 자릿수를 뒤집어서 반환하라.
만약 뒤집은 값이 32비트 정수 범위인 [-2^31, 2^31 - 1]를 벗어난다면 0을 반환하라.
64비트 정수를 사용할 수 없다고 가정하라.
입출력 예시
입출력 예시 1 | |
입력 값 | x = 123 |
기대 값 | 321 |
설명 | 정수 123을 뒤집어 321을 출력하라 |
입출력 예시 2 | |
입력 값 | x = -123 |
기대 값 | -321 |
설명 | 정수 -123을 뒤집어 -321을 출력하라 |
입출력 예시 3 | |
입력 값 | x = 120 |
기대 값 | 21 |
설명 | 정수 120을 뒤집어 21을 출력하라, 정수 표현식에 의해 0은 사라짐 |
제약 조건
풀이
해당 문제의 난이도는 Medium으로 표기되어 있었지만, 본인 입장에서는 Easy 난이도였다.
왜냐하면 코딩테스트 유형 중에서도 흔한 유형에 속하는 문제이고, 알고리즘에 접근하기 쉬웠기 때문이다.
하지만, 문제가 쉽다고 한들 이 문제의 관건은 "얼마나 효율적으로" 해결하는지 일 것이다.
본인은 효율적으로 문제를 해결하지는 못했다.
제출한 코드
class Solution:
def reverse(self, x: int) -> int:
# 32비트 정수 범위 설정
minimum, maximum = -2147483648, 2147483648
# 결과를 저장할 문자열 초기화
result = ""
# 입력 정수가 음수인지 확인
isNegative = True if str(x)[0] == "-" else False
# 문자열로 변환된 x의 시작 인덱스와 끝 인덱스 설정
start = len(str(x)) - 1
end = 0 if isNegative else -1
# 끝에서부터 시작까지 거꾸로 돌면서 문자를 결과에 추가
for i in range(start, end, -1):
result += str(x)[i]
# 결과를 정수로 변환하고, 원래 숫자가 음수였으면 부호를 붙임
result = -1 * int(result) if isNegative else int(result)
# 결과가 32비트 정수 범위를 벗어나면 0을 반환
return 0 if result < minimum or result > maximum else result
위는 테스트에 통과된 코드이다.
회고
본 문제의 풀이 과정은 코드에서 주석으로 확인할 수 있다.
이번 문제는 별다른 어려움 없이 가볍게 해결할 수 있었다.
'코딩테스트 > LeetCode' 카테고리의 다른 글
[LeetCode] Zigzag Conversion 풀이 및 후기 (1) | 2024.06.16 |
---|---|
[LeetCode] Longest Palindromic Substring 풀이 및 후기 (1) | 2024.06.13 |