본문 바로가기
반응형

정렬4

[프로그래머스][정렬] H-Index 해설 문제를 보면 x번 -> 세로축 x편 -> 가로축 이라고 생각 할 수 있다. 풀이방법 내림차순으로 정렬한다 가로세로가 h인 정사각형을 떠올리고 정사각형의 한 변의 길이가 가장 최대일때를 계산한다. def solution(citations): citations.sort(reverse=True) length = len(citations) answer = 0 for i in range(length): if citations[i] < i+1: break else: answer = i+1 return answer 다른사람 풀이를 보니 아래와 같이 개쩌는 풀이를 발견했다. 아이디어는 똑같은데 enumerate를 이용한게 참으로 멋있구만. def solution(citations): citations.sort(r.. 2021. 3. 25.
[프로그래머스][정렬] 가장 큰 수 programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 아이디어 문자열 A+B, 로 만든 숫자와 B+A로 만든 숫자를 비교하여 어느게 더 큰수인지 확인하고 정렬한다 파이썬 문자열 비교를 이용하면 사전순으로 정렬해주는데 이걸 수 비교수단으로 이용할 수 있다 답이 0일 경우에는 0만 리턴해준다.(마지막 테스트 케이스) from functools import cmp_to_.. 2021. 3. 24.
파이썬 heapq 커스텀 정렬 이용하기 파이썬에서 커스텀 정렬을 이용할 때 리턴값을 True False가 아닌 1, -1로 해주어야 함을 확인하였다. 이번에는 여러개의 멤버변수를 가진 클래스를 heapq를 이용해 heap을 만들어줄 때 custom comparator를 어떻게 이용하는지 알아보자. 결론부터 말하면 class 안에 __lt__(self, other) 함수를 재정의 해 주고 return 값은 True False로 해주면 된다. 이유는 간단하다. heapq의 소스코드를 분석해보면 힙정렬을 할 때 연산기호로 < 를 사용하기 떄문에 __lt__ 재정의 해 주어야 한다 위에 보면 연산기호가 < 인것을 확인할 수 있다 import heapq class node: def __init__(self, A, B): self.A = A self.B.. 2021. 3. 10.
파이썬 커스텀 정렬 이용하기 파이썬 3.x 이상 버전 from functools import cmp_to_key def comp(x, y): if x[0] 0 def __eq__(self, other): return mycmp(self.obj, other.obj) == 0 def __le__(self, other): return mycmp(self.obj, other.obj) = 0 __hash__ = None return K 리스트 내부 sort 안에 custom comparator를 넣어주는 케이스도 위와 동일하다. l.sort(key=cmp_to_key(comp)) 파이썬 2.x 버전 def custom_cmp(x, y): if x[0] > y[0]: return True else: return -1 l = [] l.appen.. 2021. 3. 10.
반응형