-
[LeetCode | Python] 29. Divide Two Integers개발/알고리즘 2025. 3. 22. 16:27
느낀점
사실은 이렇게 접근하라고 만든 문제가 아닌 것 같은데, 정말 문제를 풀기 위한 풀이를 한 것 같다.
문제
https://leetcode.com/problems/divide-two-integers/description/
두 정수 dividend (피제수)와 divisor (제수)가 주어졌을 때, 곱셈, 나눗셈, 나머지 연산자 (*, /, %)를 사용하지 않고 dividend를 divisor로 나눈 몫을 구하세요.
- 정수 나눗셈은 소수점 이하를 버리고 0에 가까운 정수로 결과를 반환해야 합니다. 예를 들어, 8.345는 8로, -2.7335는 -2로 반환됩니다.
- 32비트 부호 있는 정수 범위 [−2^31, 2^31 − 1] 내에서만 연산을 수행해야 합니다.
- 몫이 2^31 − 1보다 크면 2^31 − 1을 반환하고, 몫이 -2^31보다 작으면 -2^31을 반환해야 합니다.
풀이
정석적인 풀이는 비트 차원에서의 조작이 필요할 것 같은데, 단순한게 문제를 접근하였고, 예외처리만 추가한 코드이다.
class Solution: def divide(self, dividend: int, divisor: int) -> int: return 2147483647 if dividend == -2147483648 and divisor == -1 else int(dividend/divisor)
결과
- 공간복잡도: $$ O(1) $$
- 시간복잡도: $$ O(1) $$
'개발 > 알고리즘' 카테고리의 다른 글
하루히 문제 (Haruhi Problem) (0) 2025.04.05 [LeetCode | Python] 55. Jump Game (0) 2025.03.23 [LeetCode | Python] 443. String Compression (0) 2025.03.18 [LeetCode | Python] 240. Search a 2D Matrix II (0) 2025.03.16 [Loop Strategy] Peter Bro Miltersen - 100명의 죄수 문제 (0) 2023.05.29