데브허브 | DEVHUB | Keep Multiplying Found Values by Two - Leetcode 2154 - PythonKeep Multiplying Found Values by Two - Leetcode 2154 - Python
- 문제 정의: 주어진 배열에서 특정 값을 찾아 두 배로 만들고, 이 과정을 반복하여 배열에 더 이상 존재하지 않을 때까지 진행한 후 최종 값을 반환합니다. 🎯
- 예시 흐름:
original=3과 [3, 6, 12]가 주어지면, 3→6→12→24 순으로 값이 두 배가 되며, 24는 배열에 없으므로 최종 반환 값은 24입니다. 🔢
- 비효율적 방법: 매번 배열을 선형 탐색하는 방식은 최악의 경우 O(N^2)의 시간 복잡도를 가집니다. 🐌
- 정렬 방식의 한계: 배열을 정렬한 후 탐색하는 방법은 개선되지만, 해시 기반 접근보다 복잡하고 효율성이 떨어집니다. 📉
- 최적의 해시 세트 활용: 배열을 해시 세트로 변환하여(O(N) 시간, O(N) 공간) 평균 O(1) 시간에 값을 찾을 수 있습니다. ✨
- 해시 세트 성능: 해시 세트 생성 O(N)과
k번의 조회 O(k)를 합쳐 총 O(N + k) 시간 복잡도와 O(N) 공간 복잡도를 가집니다. ⏱️
- 최종 구현: 입력
nums를 세트로 변환하고, original이 세트에 있는 동안 original을 두 배로 곱하는 while 루프를 사용하여 문제를 해결합니다. ✅