Skip to content

Commit 439086a

Browse files
authored
Merge pull request #766 from KwonNayeon/main
[KwonNayeon] Week 3
2 parents a7f0f96 + 15eca17 commit 439086a

File tree

3 files changed

+87
-0
lines changed

3 files changed

+87
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""
2+
Constraints:
3+
1. 2 <= nums.length <= 10^5
4+
2. -30 <= nums[i] <= 30
5+
3. The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer
6+
7+
Time Complexity: O(n)
8+
- 배열을 두 번 순회하므로 O(n)
9+
10+
Space Complexity: O(1)
11+
- 출력 배열(answer)을 제외하면 추가 공간이 상수만큼만 필요(left, right 변수)
12+
13+
풀이 방법:
14+
1. answer 배열을 1로 초기화 (곱셈에서는 1이 영향을 주지 않음)
15+
2. 왼쪽에서 오른쪽으로 순회:
16+
- answer[i]에 현재까지의 left 누적값을 곱함
17+
- left *= nums[i]로 다음을 위해 left 값을 업데이트
18+
3. 오른쪽에서 왼쪽으로 순회 (range(n-1, -1, -1) 사용):
19+
- answer[i]에 현재까지의 right 누적값을 곱함
20+
- right *= nums[i]로 다음을 위해 right 값을 업데이트
21+
"""
22+
23+
class Solution:
24+
def productExceptSelf(self, nums: List[int]) -> List[int]:
25+
n = len(nums)
26+
answer = [1] * n
27+
28+
left = 1
29+
for i in range(n):
30+
answer[i] *= left
31+
left *= nums[i]
32+
33+
right = 1
34+
for i in range(n-1, -1, -1):
35+
answer[i] *= right
36+
right *= nums[i]
37+
38+
return answer

reverse-bits/KwonNayeon.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""
2+
Constraints:
3+
- The input must be a binary string of length 32
4+
5+
Time Complexity: O(1)
6+
- 항상 고정된 32비트 문자열에 대해 연산하므로 상수 시간
7+
8+
Space Complexity: O(1)
9+
- 32비트 고정 크기의 문자열 연산만 사용하므로 상수 공간
10+
11+
풀이 방법:
12+
1. format(n, '032b')를 사용해 입력받은 정수를 32비트 이진수 문자열로 변환함
13+
2. 문자열 슬라이싱 [::-1]으로 비트를 뒤집음
14+
3. int(reversed_binary, 2)로 뒤집은 이진수 문자열을 다시 정수로 변환함
15+
"""
16+
17+
class Solution:
18+
def reverseBits(self, n: int) -> int:
19+
20+
binary = format(n, '032b')
21+
22+
reversed_binary = binary[::-1]
23+
24+
return int(reversed_binary, 2)

two-sum/KwonNayeon.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""
2+
Constraints:
3+
- 2 <= nums.length <= 10^4
4+
- -10^9 <= nums[i] <= 10^9
5+
- -10^9 <= target <= 10^9
6+
- Only one valid answer exists.
7+
8+
Time Complexity: O(n²)
9+
- 중첩 반복문을 사용하기 때문
10+
- 첫 번째 반복문: n번
11+
- 각각에 대해 두 번째 반복문: n-1, n-2, ... 1번
12+
- 따라서 총 연산 횟수는 n * (n-1)/2로 O(n²)
13+
14+
Space Complexity: O(1)
15+
- 추가 공간을 사용하지 않음
16+
- result 리스트는 항상 크기가 2로 고정
17+
"""
18+
class Solution:
19+
def twoSum(self, nums: List[int], target: int) -> List[int]:
20+
result = []
21+
22+
for i in range(len(nums)):
23+
for j in range(i+1, len(nums)):
24+
if nums[j] == target - nums[i]:
25+
return [i, j]

0 commit comments

Comments
 (0)