Search

LeetCode 콘테스트 첫 번째 만점

생성일
2023/03/05 14:18
태그
회고
날짜
2023/03/05
3 more properties
릿코드(LeetCode)에서는 Weekly Contest와 Biweekly Contest를 통해 전 세계 사람들이 모여 코딩 문제를 풀 수 있는 장을 마련해준다. 코딩테스트를 준비하며 애용했던 사이트인 만큼 콘테스트에도 종종 참여하곤 했는데, 이번에 처음으로 4문제 중 4문제를 맞췄다.
평소에는 2문제를 맞추고, 운이 좋으면 3문제를 맞췄던 것 같다. 이번 시험을 보며 2문제를 풀고 세 번째 문제를 만났을 때 여차여차 문제가 풀렸고, 만족스럽게 떠나기 전에 네 번째 문제를 읽어 보았다. 사실 제한 시간 내에 풀 수 있을 거라는 생각은 안 했고, 실제로 문제를 읽고도 무슨 이런 문제가 있지 싶을 정도로 어색한 유형이었다. 그런데 신기하게 멍하게 문제를 보다가 종이에 예시를 몇 번 써내려 가다 보니 문제의 해결에 대한 실마리가 보였다. 그리고 코드를 쓰고 냈는데 통과가 됐다.
혹시 문제가 궁금하면 여기 참고. 정말 좋은 문제인 것 같다.
Count Number of Possible Root Nodes - LeetCode
Can you solve this real interview question? Count Number of Possible Root Nodes - Alice has an undirected tree with n nodes labeled from 0 to n - 1. The tree is represented as a 2D integer array edges of length n - 1 where edges[i] = [ai, bi] indicates that there is an edge between nodes ai and bi in the tree. Alice wants Bob to find the root of the tree. She allows Bob to make several guesses about her tree. In one guess, he does the following: * Chooses two distinct integers u and v such that there exists an edge [u, v] in the tree. * He tells Alice that u is the parent of v in the tree. Bob's guesses are represented by a 2D integer array guesses where guesses[j] = [uj, vj] indicates Bob guessed uj to be the parent of vj. Alice being lazy, does not reply to each of Bob's guesses, but just says that at least k of his guesses are true. Given the 2D integer arrays edges, guesses and the integer k, return the number of possible nodes that can be the root of Alice's tree. If there is no such tree, return 0.   Example 1: [https://assets.leetcode.com/uploads/2022/12/19/ex-1.png] Input: edges = [[0,1],[1,2],[1,3],[4,2]], guesses = [[1,3],[0,1],[1,0],[2,4]], k = 3 Output: 3 Explanation: Root = 0, correct guesses = [1,3], [0,1], [2,4] Root = 1, correct guesses = [1,3], [1,0], [2,4] Root = 2, correct guesses = [1,3], [1,0], [2,4] Root = 3, correct guesses = [1,0], [2,4] Root = 4, correct guesses = [1,3], [1,0] Considering 0, 1, or 2 as root node leads to 3 correct guesses. Example 2: [https://assets.leetcode.com/uploads/2022/12/19/ex-2.png] Input: edges = [[0,1],[1,2],[2,3],[3,4]], guesses = [[1,0],[3,4],[2,1],[3,2]], k = 1 Output: 5 Explanation: Root = 0, correct guesses = [3,4] Root = 1, correct guesses = [1,0], [3,4] Root = 2, correct guesses = [1,0], [2,1], [3,4] Root = 3, correct guesses = [1,0], [2,1], [3,2], [3,4] Root = 4, correct guesses = [1,0], [2,1], [3,2] Considering any node as root will give at least 1 correct guess.   Constraints: * edges.length == n - 1 * 2 <= n <= 105 * 1 <= guesses.length <= 105 * 0 <= ai, bi, uj, vj <= n - 1 * ai != bi * uj != vj * edges represents a valid tree. * guesses[j] is an edge of the tree. * guesses is unique. * 0 <= k <= guesses.length
두 문제를 푸는 것도 어색했는데 이번에는 두 문제를 풀 때 당연하다는 느낌을 받았고, 운이 좋았지만 네 번째 문제까지 맞출 수 있었다. 실력이 늘고 있다는 것은 조금씩 느끼고 있었지만 실제로 이전의 기록들과 비교하니 그 성취가 한 걸음에 다가온 것 같은 기분이 든다. 중요한 건 부족한 부분을 인지하고 그 부분을 보완하기 위해 노력하는 것임을 다시 느낀다.
아직 LeetCode나 Programmers에 못 푸는 문제가 많고 스스로가 부족함을 느끼고 있지만 언젠가는 다른 분들처럼 쉽게 문제를 해결할 수 있는 날이 올 거라 믿으며, 앞으로도 정진해야겠다.