본문 바로가기

전체 글51

[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.
[백준] 1083 소트(파이썬/python) 🎈문제 https://www.acmicpc.net/problem/1083 🎁알고리즘 및 접근 정렬 1. "사전순으로 가장 뒷서는 것" == 큰 수가 앞에 올 수록 사전순으로 뒤쪽이 된다. 따라서 s의 횟수안에 최대한 큰 수를 앞으로 보내줘야된다. 2. s의 횟수보다 뒤에있는 index의 큰 수는 맨 앞으로 보낼 수 없다. ㅡㅡㅡ 접근 1. a[0:s+1]만큼 탐색하여 가장 큰 수의 idx를 얻어냄 2. 가장 큰 수를 a[0]으로 보낼 때 까지 Sort() 3. a[1:1+(s-sort횟수)+1]만큼 탐색하여 가장 큰 수의 idx를 얻어냄 4. 가장 큰 수를 a[1]으로 보낼 때 까지 Sort() 💻정답 코드 # 1083 소트 n = int(input()) a = list(map(int,input().sp.. 2023. 8. 27.