본문 바로가기

Coding Test/LeetCode57

[LeetCode] 17. Letter Combinations of a Phone Number [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (전화 번호 문자 조합) 2~9까지 숫자가 주어졌을 때 전화 번호로 조합 가능한 모든 문자를 출력하라. 2. 풀이 DFS를 이용한 풀이 3. 코드 class Solution: def letterCombinations(self, digits: str) -> List[str]: def dfs(idx, path): if idx == leng: ret.append(path) return for c in dic[digits[idx]]: dfs(idx + 1, path + c) if not digits: return [] dic = { "2": "abc", "3": "def", "4": "ghi", "5": "jkl", "6".. 2021. 11. 24.
[LeetCode] 23. Merge k Sorted Lists [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (k개 정렬 리스트 병합) k개의 정렬된 리스트를 1개의 정렬된 리스트로 병합하라. 2. 풀이 우선순위 큐를 이용한 풀이 heapq 이용 heapq.heappush(heap, (node.val, node))를 할 경우 node.val가 같을 경우 TypeError: ' ListNode: root = ret = ListNode(None) heap = [] # 각 연결 리스트의 루트를 힙에 저장 for idx, node in enumerate(lists): if node: # heapq.heappush(heap, (node.val, node)) # 중복 오류 발생 heapq.heappush(heap, (node... 2021. 11. 24.
[LeetCode] 886. Possible Bipartition [JAVA(자바)] '기술면접 라이브코딩 - 승지니어'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 () N명의 사람을 두 그룹으로 나눈다. Dislikes[i] = [a,b] 일 때, a 와 b 는 서로 다른 그룹이어야 한다. Input: N = 4, dislikes = [[1,2],[1,3],[2,4]] Output: true Explanation: group1 [1,4], group2 [2,3] Input: N = 3, dislikes = [[1,2],[1,3],[2,3]] Output: false 2. 풀이 이분그래프 와 DFS 를 이용한 풀이 이분그래프를 통해 N명의 사람을 2개의 그룹으로 나눈다. DFS 를 통해 dislikes한 사람을 모두 다른 그룹(true/false)으로 보낸다. visi.. 2021. 11. 24.
[LeetCode] 218. The Skyline Problem [JAVA(자바)] '기술면접 라이브코딩 - 승지니어'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 빌딩의 좌표가 주어졌을 때, 모든 빌딩이 형성하는 실루엣의 바깥 쪽 윤곽점을 나타내어라. Input: buildings = [[2,9,10],[3,7,15],[5,12,12],[15,20,10],[19,24,8]] Output: [[2,10],[3,15],[7,12],[12,0],[15,10],[20,8],[24,0]] 2. 풀이 Sort 와 TreeMap 을 이용한 풀이 빌딩을 2개의 Line으로 나눈다. 빌딩의 왼쪽과 오른쪽을 구분하기 위해 왼쪽은 높이에 마이너스를 붙인다. (-height) (left, -height), (right, height) List lines = new ArrayList(bui.. 2021. 11. 24.
[LeetCode] 876. Middle of the Linked List [JAVA(자바)] 문제 👉 1. 문제 (링크드리스트의 중간) 링크드리스트의 중간을 반환하라. Input: [1,2,3,4,5] Output: Node 3 from this list (Serialization: [3,4,5]) The returned node has value 3. (The judge's serialization of this node is [3,4,5]). Note that we returned a ListNode object ans, such that: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL. Input: [1,2,3,4,5,6] Output: Node 4 from this list (S.. 2021. 11. 24.
[LeetCode] 589. N-ary Tree Preorder Traversal [JAVA(자바)] 문제 👉 1. 문제 n 항 트리의 루트가 주어지면 노드 값의 사전 순회(Preorder)를 반환합니다. Input: root = [1,null,3,2,4,null,5,6] Output: [1,3,5,6,2,4] Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14] Output: [1,2,3,6,7,11,14,4,8,12,5,9,13,10] 2. 풀이 preorder 를 이용한 풀이 self -> children 3. 코드 /* // Definition for a Node. class Node { public int val; public List children; public.. 2021. 11. 24.
[LeetCode] 530. Minimum Absolute Difference in BST [JAVA(자바)] 문제 👉 1. 문제 (BST의 최소 절대 차이) 이진 검색 트리 (BST)의 루트가 주어지면 트리에 있는 두 개의 서로 다른 노드 값 간의 최소 절대 차이를 반환합니다. Input: root = [4,2,6,1,3] Output: 1 Input: root = [1,0,48,null,null,12,49] Output: 1 2. 풀이 이진검색트리 - inorder 를 이용한 풀이 이진 검색 트리의 inorder -> 오름차순 정렬이 됨! 트리 순회 preorder : self -> left -> right inorder : left -> self -> right postorder : left -> right -> self 3. 코드 class Solution { int minValue, preValue; b.. 2021. 11. 24.
[LeetCode] 461. Hamming Distance [JAVA(자바)] 문제 👉 1. 문제 (Hamming Distance (XOR)) 두 정수 사이의 해밍 거리는 해당 비트가 다른 위치의 수입니다. 두 개의 정수 x와 y가 주어지면 그 사이의 해밍 거리를 반환합니다. Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑2. 풀이 비트 연산 을 이용한 풀이 AND (&) : 두 비트가 모두 1이면 1, 아니면 0 OR (|) : 두 비트중 하나라도 1이면 1, 아니면 0 XOR (^) : 두 비트가 다르면 1, 아니면 0 Int 는 4bit (4*8 = 32 bytes) 이므로 32자리까지의 비트를 확인한다. 3. 코드 class Solution { public int hammingDistance(in.. 2021. 11. 24.
[LeetCode] 107. Binary Tree Level Order Traversal II [JAVA(자바)] 문제 👉 1. 문제 (Binary Tree Level Order) 이진 트리의 루트가 주어지면 노드 값의 상향식(bottom-up) 순서 순회를 반환합니다. (i.e., from left to right, level by level from leaf to root) Input: root = [3,9,20,null,null,15,7] Output: [[15,7],[9,20],[3]]2. 풀이 BFS 를 이용한 풀이 Queue 에서 노드를 순서대로 꺼내 list 에 추가한다. Queue 에 left, right 순서로 자식 노드를 추가한다. Bottom-up 순서로 출력하기 위해 각 층을 나타나내는 list를 ret의 0번 인덱스에 추가한다. 3. 코드 /** * Definition for a binary .. 2021. 11. 24.