본문 바로가기

leetcode6

[LeetCode] 2658번: Maximum Number of Fish in a Grid Hint 1. 물고기가 있는 곳에서 DFS 알고리즘을 이용해 물고기 수 세기 2. DFS 시작지점을 찾았다면 연결된 모든 물고기 있는 곳에서 물고기 수 더하기 3. 물고기 있는 곳을 이미 방문했는지 확인하는 리스트가 필요함 (중복으로 더하기 않게) LeetCode 2658번: Maximum Number of Fish in a Grid (풀어보기) class Solution: def findMaxFish(self, grid: List[List[int]]) -> int: # 낚시가 이미 된 부분 표시해주는 세트 fished = set() def fishing(r, c): # 아래 3가지가 다 통과하지 못하면 물고기가 없으므로 0을 반환함 if not (0 2023. 5. 1.
[LeetCode] 2181번: 기존 연결 리스트 수정하기 Hint 1. 어떻게 하면 포인터 2개를 이용해서 기존 리스트를 원하는 결과로 수정할 수 있을까? 2. 포인터 1개는 수정하는 노드 위치에 (a), 다른 하나는 리스트 전체를 확인하는 용도(b)로 이용해보자! 3. 움직이는 포인터b가 그 다음 0에 도달할 때까지 숫자들을 수정하는 포인터a 위치에 더하면 된다. 4. 마지막 노드는 null에 연결되도록 바꿔야한다. LeetCode 2181번: Merge Nodes in Between Zeros (풀어보기) class Solution: def mergeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]: # 포인터 2개 만들기 # now = 덧셈할 포인터 위치 # pointer = 리스트 전체를 확인할 .. 2023. 4. 30.
[LeetCode] 1828번: 원 안의 점 개수 Hint 1. 원과 점들의 최대 개수가 각각 500개이기 때문에 for문 2개를 사용해서 일일이 비교해도 된다 2. Follow up에 O(n)으로 풀어보라고 되어있지만 이건 나중에 도전...^^ LeetCode 1828번: Queries on Number of Points Inside a Circle (풀어보기) class Solution: def countPoints(self, points: List[List[int]], queries: List[List[int]]) -> List[int]: # points를 x, y 순서로 작은 숫자부터 큰 숫자까지 정렬한다 points = sorted(points, key=lambda x: (x[0],x[1])) answer = [] for query in que.. 2023. 4. 28.
[LeetCode] 876번: 연결 리스트 Goal 1. 연결 리스트 이해하기 2. 가장 간단한 연결 리스트 알고리즘 문제 풀어보기 연결 리스트(Linked List)란? 연결 리스트란 리스트 안에 있는 항목들이 그 다음 순서로 오는 항목과 연결되어 정해진 순서로 묶여 있는 리스트 구조를 말한다. LeetCode 876번: Middle of the Linked List (풀어보기) Hint 1. head라는 연결 리스트 구조의 정의 : head.val = 현재 위치의 수 head.next= 다음 연결된 리스트 2. 총 개수가 1개일 때는 현재 위치와 중간 지점의 위치가 같다 3. 연결된 리스트의 개수가 하나씩 늘어날 때마다 현재 위치와 중간 지점의 위치가 어떻게 변하는지 생각해보자 4. 총 개수가 홀수일 때와 짝수일 때 현재 위치와 중간 지점의 .. 2023. 3. 11.
[LeetCode] 226번: Invert Binary Tree Hint 1. DFS 알고리즘 사용해야함 2. 왼쪽과 오른쪽에 자식 노드가 있다면 바꿔치기 해주면 됨 LeetCode 226번: Invert Binary Tree (풀어보기) class Solution: def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: def dfs(root): # 노드인지 확인. 노드가 아니라면 None 값이기 때문에 not을 해줘야 True가 됨 if not root: return root# 노드가 아니기 때문에 바꿔치기 안하고 그냥 반환 dfs(root.left)# 왼쪽 노드의 자식 노드 뒤집기 dfs(root.right)# 오른쪽 노드의 자식 노드 뒤집기 # 왼쪽 노드와 오른쪽 노드 바꿔치기 root.le.. 2023. 3. 10.
[LeetCode] 2236번: 트리 구조 Goal 1. 트리 구조 이해하기 2. 가장 간단한 트리 구조 알고리즘 문제 풀어보기 트리 구조란? 트리 구조란 노드(Node)와 자식노드(Child Node)로 구성된 구조를 얘기한다. 가장 흔히 보는 트리 구조는 바이너리 트리 구조(Binary Tree)로 각 노드가 왼쪽 오른쪽으로 자식노드 2개를 가진 형태다. LeetCode 2236번: Root Equals Sum of Children (풀어보기) Hint 1. root라는 트리 구조의 정의 : root.val = 현재 노드의 수 root.left = 현재 노드의 왼쪽 자식노드 root.right= 현재 노드의 오른쪽 자식노드 2. root.val이 현재 노드의 수라면 root.left 노드의 수를 구하려면? (정답은 밑에 하이라이트하면 보임) .. 2023. 3. 9.