본문 바로가기
반응형

프로그래밍54

[BFS/DFS] 4방향 탐색 # 2차원 배열 map은 모두 정수 타입 숫자들로 채워져 있다. 여기서 0은 바다를 뜻하고 0 이외의 값은 땅을 뜻한다. map에 몇 개의 섬이 있는지 반환하는 함수를 구현하라. # map = [ [ 1, 1, 0, 0, 0 ], # [ 1, 0, 0, 0, 0 ], # [ 0, 0, 0, 1, 0 ], # [ 0, 1, 0, 0, 0 ], # [ 1, 1, 1, 0, 0 ] ] # the return value should be 3 def search_bfs(i,j,map): global result #맨 처음 위치 q = [] q.append((i,j)) check[i][j] = True while q: x,y = q.pop(0) #bfs for k in range(4) : #4방향 이동 nx, ny.. 2021. 4. 5.
[브루트포스/재귀함수] N개 알파벳 중에 R개를 나열하는 경우 # N개 알파벳 중에 R개를 나열하는 경우 def permutation (cur, n, r, result): if cur >= r : print(result) return else: for i in range(n): alpha = chr(ord('a') + i) if not check[cur]: result[cur] = alpha check[cur] = True permutation(cur+1,n,r,result) # check[cur] = False result[cur] = 0 if __name__ == '__main__': n,r = map(int,input().split()) check = [False]*r result = [0]*r permutation(0,n,r,result) r중 for문 수행.. 2021. 4. 5.
Leet Code 121. Best Time to Buy and Sell Stock leetcode.com/problems/best-time-to-buy-and-sell-stock/ 시간초과 (브루트포스) class Solution: def maxProfit(self, prices: List[int]) -> int: profit = 0 for i in range(len(prices)): for j in range(i+1, len(prices)): if prices[j] - prices[i] > profit: profit = prices[j] - prices[i] return profit 시간복잡도 : O(N^2) 1 = prices[j] : i = j # 박힌돌 위치 이동 #박힌돌보다 굴러들어온 돌이 더 클 때 elif prices[j] - prices[i] > profit : prof.. 2021. 4. 4.
[DP] Leet code 118. Pascal's Triangle leetcode.com/problems/pascals-triangle/ 내가 푼 코드 class Solution: def generate(self, numRows: int) -> List[List[int]]: result = [[1]] if numRows >= 2: result.append([1,1]) if numRows >= 3: for k in range(3, numRows+1): temp = [1] * k for i in range(1, k-2+1): temp[i] = result[k-2][i-1] + result[k-2][i] result.append(temp) return result 솔루션 코드 (코드를 좀 더 일반화) class Solution: def generate(self, num_ro.. 2021. 4. 4.
[이진트리/DFS] Leet code 104 - Maximum Depth of Binary Tree 1. 스택 활용하는 방법 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def maxDepth(self, root: TreeNode) -> int: if root is not None: s = [(root, 1)] else: s = [] maxValue = 0 while s: cur, cnt = s.pop() if cur.left is None and cur.right is None: if cnt > maxValue: maxValue.. 2021. 4. 3.
[BFS / 이진트리] LeetCode 101. Symmetric Tree 이진트리가 데칼코마니 같은 형식인지 확인하는 문제 내 첫 아이디어는 BFS로 왼쪽트리 따로 탐색(왼쪽->오른쪽방향), 오른쪽트리 따로 탐색(오른쪽->왼쪽방향) BFS로 방향 고려해서 탐색한다는 아이디어 잘 떠올렸따. 각각 탐색한 결과를 left, right 배열에 담아서 최종적으로 left, right 배열이 같은지 다른지 확인한다. # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def isSymmetric(self, root: Tr.. 2021. 3. 23.
반응형