Algorithm/LeetCode8 [LeetCode] 937. Reorder Data in Log Files (파이썬/python) (with. cmp_to_key) 🎈문제 https://leetcode.com/problems/reorder-data-in-log-files/description/ 🎁어떤 알고리즘? 정렬 lambda 풀이 / cmp_to_key 풀이 1. letter-log는 모든 digit-log 앞에 온다 => 문자 로그와 숫자 로그를 구분한다. 2. letter-log는 사전순으로 정렬되는데, 내용이 동일하면 식별자를 기준으로 사전순으로 정렬된다. => letter-log 조건에 맞게 정렬한다. 3. digit-log는 상대적 순서를 유지한다. => digit-log는 그대로 저장한다. 4. letter-log와 digit-log을 합쳐서 output을 만든다. 보통 lambda를 이용하면 간편하지만, 조건이 까다로운 문제(https://leetc.. 2023. 9. 7. [LeetCode] 179. Largest Number(파이썬/python) (with. cmp_to_key) 🎈문제 https://leetcode.com/problems/largest-number/description/ 🎁어떤 알고리즘? 정렬 1. 처음엔 permutation으로 가능한 모든 조합을 찾아서 풀려 했는데 확실히 순열은 개수가 10만 넘어가도 시간초과가 나기 쉽다. 2. cmp_to_key를 활용한 풀이 cmp_to_key()에 대한 설명 from functools import cmp_to_key def compare(a,b): if a > b: return 1 elif a == b: return 0 elif a < b: return -1 lst = [1,3,2] lst = sorted(lst, key=cmp_to_key(compare)) print(lst) # 결과 : [1,2,3] cmp_to_.. 2023. 9. 7. [LeetCode] 22. Generate Parentheses (파이썬/python) 🎈문제 https://leetcode.com/problems/generate-parentheses/ 🎁어떤 알고리즘? 백트래킹 1. 파이썬으로 순열/조합 문제를 마주했을 때, itertools의 permutation, combination을 사용하는 방법과, 백트래킹을 이용하는 방법을 떠올려야한다. 2. 단순하게 몇 개 고르는 문제가 아니라 복잡한(?) 조건을 만족하는 조합을 찾아내는 문제 이므로 백트래킹을 이용하기로 했다. 3. 먼저 모든 조합을 백트래킹으로 찾아내고 각각의 조합을 stack을 이용해 짝을 이루는 것들만 추가해주는 방법으로 풀었다. -> 통과는 했지만 속도가 느림 4. 더 빠른 방법을 찾아보니 애초에 조건을 만족할 때만 추가해서 만들어내는 방법이 있었다. -> 정답 코드 💻 정답 코드 .. 2023. 9. 1. [LeetCode] 1395. Count Number of Teams (파이썬/python) 🎈문제 https://leetcode.com/problems/redundant-connection/ 🎁어떤 알고리즘? 1. 모르겠음 ㅡㅡ 2. 백트래킹과 3중 for문 두 번의 실패를 겪고 결국 찾아본 코드 💻코드 class Solution: def numTeams(self, rating: List[int]) -> int: ans = 0 left = [0 for _ in range(len(rating))] right = [0 for _ in range(len(rating))] for i in range(len(rating)): for j in range(0,i): if rating[i] > rating[j]: left[i] = left[i] + 1 ans = ans + left[j] else: right.. 2023. 8. 12. 이전 1 2 다음