class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name='{self.name}',age={self.age})"
people = [
Person('Alice', 30),
Person('Bob', 35),
Person('Charlie', 25),
Person('Alice', 25),
Person('David', 30)
]
people.sort(key=lambda person: person.age)
people.sort(key=lambda person: person.name,reverse=True)
print(people)
class Student:
def __init__(self, name, grade, score):
self.name = name
self.grade = grade
self.score = score
def __repr__(self):
return f"Student(name='{self.name}',grade={self.grade},score={self.score})"
students = [
Student('Alice', 3, 85),
Student('Bob', 2, 90),
Student('Charlie', 2, 88),
Student('Alice', 1, 95),
Student('David', 3, 78)
]
students.sort(key=lambda student: student.score ,reverse=True)
students.sort(key=lambda student: student.name ,reverse=True)
print(students)
import heapq
nums = [15, 22, 7, -8, 33, 12, 42, -3, 18, 29, -11]
heap1 = []
for num in nums:
heapq.heappush(heap1, -num)
print(-heapq.heappop(heap1))
heap2 = []
for i in heap1:
heapq.heappush(heap2, -i)
print(heap2)
'''
문제 2
주어진 시간 내에 가능한 많은 일을 하려고 합니다.
각 일에는 시작 시간과 끝나는 시간이 있습니다.
일은 시작 시간과 끝나는 시간이 겹치지 않게 일정을 짜야 합니다.
주어진 일들 중에서 가장 많은 일을 할 수 있는 방법을 찾아주세요.
작업
주어진 일들의 시작 시간과 끝나는 시간을 입력 받아
가능한 많은 일을 할 수 있는 일정을 출력하세요.
'''
def schedule_jobs(jobs):
jobs.sort(key=lambda x:x[1])
print(jobs)
for i in jobs:
if i[1] =< i+1[0]
pass
jobs = [(1, 4), (3, 5), (0, 6), (5, 7), (3, 8), (5, 9), (6, 10),
(8, 11), (8, 12), (2, 13), (12, 14)]
print(schedule_jobs(jobs))
'''
문제 3
주어진 배열에서 k번째로 작은 요소를 찾는 문제입니다.
이 문제는 힙 큐를 사용하여 효율적으로 해결할 수 있습니다.
힌트 : 힙에 k개 보다 많은 요소가 추가되었다면
pop으로 제거하여 높은 효율성 추구
작업
주어진 배열과 k를 입력 받아 k번째로 작은 요소를 찾아 출력하세요.
'''
import heapq
def find_kth_largest(nums, k):
heap = []
for i in nums:
heapq.heappush(heap,-i)
if len(heap) > k:
heapq.heappop(heap)
return -heapq.heappop(heap)
nums = [3,2,1,5,6,4]
k = 2
print(find_kth_largest(nums, k))
항상 좋은 글 감사합니다.