티스토리 뷰

오늘 풀어볼 문제는 LeetCode에서 난이도는 Easy인 Reverse Integer문제입니다.

 

문제는 이렇습니다.

Given a 32-bit signed integer, reverse digits of an integer.

부호 있는 32비트 정수가 주어지고 역으로 정수로 나타내라.

 

Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [-2^31,  2^31 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

부호 있는 32비트 정수를 처리하는 환경이며 범위는 [-2^31,  2^31 − 1](-2,147,483,648에서 2,147,483,647까지) 범위에 들어야 하고 만약에 역으로 한 정수가 오버플로우 한다면 0을 리턴해라.

 

예를 들어

123이 들어오면 321을 리턴하고

-123이 들어오면 -321을 리턴하고

120이 들어오면 21을 리턴해야 합니다.

 

저는 문자열을 활용했습니다.

들어온 x를 문자열로 변경해준 후 reversed를 사용했다.

문자열로 변경한 이유는 정수는 sequence를 채택하지 않기 때문에 reverse가 존재하지 않습니다.

 

만약 앞에 음수를 나타내는 -가 있으면 value에서 마지막을 지워줍니다.

-123이 reverse 되면 321-이 되기 때문에 마지막-을 지워준 후 처음 인덱스에 -를 추가해줍니다.

지금 보니까 굳이 hasPrefix를 사용하지 않아도 x값이 음수인지 확인해주면 될 것 같네요.

 

숫자를 문자열로 변환하는 것은 크게 상관없는데 문자열을 숫자로 변환하는 것에는 문제가 발생할 수 있습니다.

예를 들어 공백이나 문자가 포함되어 있는 경우입니다. 

 

그렇기 때문에 if let을 활용해 문자열을 숫자로(Int32)로 변환해준 후 리턴해줍니다.

만약에 Int32로 변환되지 않는다면 0이 리턴되기 때문에 Int32 범위에 있는지 따로 체크할 필요는 없습니다.

 

더 좋은 방법이 있으면 같이 공유해보면 좋을 것 같습니다.

 

https://leetcode.com/problems/reverse-integer/

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함