Skip to content

Commit 1049375

Browse files
committed
2주차 solution
1 parent 35df9c2 commit 1049375

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

climbing-stairs/Donghae0230.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# 1스텝 또는 2스텝으로 n개의 계단을 오르는 방법 경우의 수 구하기
2+
# 1계단: 1
3+
# 2계단: 2 , 1 + 1
4+
# 3계단: 2 + 1, 1+1+1, 1+2
5+
# 4계단: 2+2, 1+1+1+1, 2+1+1, 1+2+1, 1+1+2
6+
# -> 방법: step_n = step_(n-1) + step_(n-2)
7+
# 시간 복잡도: O(n), while문 사용
8+
# 공간 복잡도: O(n), 길이 n인 result 리스트 생성
9+
class Solution:
10+
def climbStairs(self, n: int) -> int:
11+
if n == 1:
12+
return 1
13+
elif n == 2:
14+
return 2
15+
else:
16+
result = [1, 2]
17+
i = 2
18+
while i < n:
19+
result.append(result[i-1] + result[i-2])
20+
i += 1
21+
return result[-1]
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# 2차 시도: 왼쪽 누적 곱 * 오른쪽 누적 곱
2+
# 시간 복잡도: O(n), for문 사용
3+
# 공간 복잡도: O(n), 길이 n인 리스트 prefix, suffix, result 생성
4+
class Solution:
5+
def productExceptSelf(self, nums: List[int]) -> List[int]:
6+
# 왼쪽 누적 곱 리스트 생성
7+
prefix = [nums[0]]
8+
for i in range(1, len(nums)-1):
9+
tmp = nums[i]
10+
prefix.append(prefix[i-1] * nums[i])
11+
12+
nums.reverse()
13+
# 오른쪽 누적 곱 리스트 생성
14+
suffix = [nums[0]]
15+
for i in range(1, len(nums)-1):
16+
tmp = nums[i]
17+
suffix.append(suffix[i-1] * nums[i])
18+
19+
# result[0] = suffix[2]
20+
# result[1] = suffix[1] * prefix[0]
21+
# result[2] = suffix[0] * prefix[1]
22+
# result[3] = prefix[2]
23+
result = [0 for i in range(0, len(nums))]
24+
result[0] = suffix[-1]
25+
result[-1] = prefix[-1]
26+
for i in range(1, len(nums)-1):
27+
result[i] = suffix[len(nums)-2-i] * prefix[i-1]
28+
return result
29+
30+
31+
# 1차 시도: 이중 for문 사용
32+
# 시간 복잡도: O(n^2)으로 실패
33+
# class Solution:
34+
# def productExceptSelf(self, nums: List[int]) -> List[int]:
35+
# result = []
36+
# for i in range(0, len(nums)):
37+
# tmp = 1
38+
# for j in range(0, len(nums)):
39+
# if i == j:
40+
# continue
41+
# tmp *= nums[j]
42+
# result.append(tmp)
43+
# return result

valid-anagram/Donghae0230.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# 시간 복잡도: O(n), for문 사용
2+
# 공간 복잡도: O(n), 길이 n인 s_list, t_list 생성
13
class Solution:
24
def isAnagram(self, s: str, t: str) -> bool:
35
s_list = sorted(list(s))

0 commit comments

Comments
 (0)