floatFirstTOC: right
๐ฅ๏ธย ์์ํ๋ฉฐ
์
๋ ฅ๋ฐ์ ์ซ์๋ฅผ ๊ฑฐ๊พธ๋ก ์ถ๋ ฅํ๋ ๋ฌธ์ ๋ค. ๋งจ ๋ค ์ซ์๊ฐ 0์ด๋ผ๋ฉด ์ด๋ ์๋ตํ๋ค.
ย
ํ์ด์ฌ์์๋ ๊ฐ๋จํ๊ฒ ํ ์ ์๋ค. ์ด์ฐจํผ ๋ฒ์๋
int
ํ์ผ๋ก ์ฃผ์ด์ก๊ธฐ ๋๋ฌธ์, ๊ทธ๋ฅ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ ํ str
๋ก ๋ณํํ ๋ฌธ์์ด์ ๋ค์ง์ ํ ๋ค์ int
ํ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋๋ค.ย
C++์ ์ํ์ ์ผ๋ก ์ ๊ทผํ๋ฉด ๋๋ค. x๊ฐ ๋จ์ง ์์ ๋๊น์ง 10์ผ๋ก ๋๋ ์, ๊ทธ ๋๋จธ์ง๋ฅผ ๊ณฑํด์ฃผ๋ฉด ๋๋ค.
ย
โ๏ธย Python
class Solution: def reverse(self, x: int) -> int: # ์ค๋ฅ ๋ฒ์ ์ ์ INT_MAX = 2**31 - 1 INT_MIN = -(2**31) # ์์์ธ์ง ํ์ธ sign = -1 if x < 0 else 1 x = abs(x) # ์ซ์ ๋ค์ง๊ณ ๋ถํธ ์ ์ฉ reversed_number = int(str(x)[::-1]) * sign # ์ค๋ฒํ๋ก์ฐ ๊ฒ์ฌ if reversed_number < INT_MIN or reversed_number > INT_MAX: return 0 return reversed_number if __name__ == "__main__": sol = Solution() print(sol.reverse(123)) # 321
ย
โ๏ธย C++
class Solution { public: int reverse(int x) { int result = 0; while (x != 0) { int pop = x % 10; x /= 10; // ์ค๋ฒํ๋ก์ฐ ์ฒดํฌ if (result > INT_MAX / 10 || (result == INT_MAX / 10 && pop > 7)) return 0; if (result < INT_MIN / 10 || (result == INT_MIN / 10 && pop < -8)) return 0; result = result * 10 + pop; } return result; } };
- 321๊ฐ ๋ค์ด๊ฐ์ ๋:
pop
์ 10์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ฝ์ , ์ฒ์ ์ํ์ค์์1
- ์ดํ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ฒดํฌํ ํ,
result
์ 10์ ๊ณฑํ ํpop
์ ๋ํจ - ์ฒซ ์ํ์ค์์๋
0 * 10 + 1 = 1
x
๊ฐ 0์ด ๋ ๋๊น์ง ๋ฐ๋ณต- ๋ ๋ฒ์งธ ์ํ์ค๋ถํฐ
1 * 10 + 2 = 12
,12 * 10 + 3 = 123
์์ผ๋ก ์ด์ด๋๊ฐ
ย
๋๊ธ