250126 알고리즘 스터디(복습완료)

송용진·2025년 1월 26일
0

알고리즘

목록 보기
170/173
# 숫자 리스트를 절대값 기준으로 정렬하는 예제입니다.
nums = [3, -1, 4, -1, -5, 9, 2, -6]
sorted_nums = sorted(nums, key=abs)
print(sorted_nums)  # 출력: [-1, -1, 2, 3, 4, -5, -6, 9]
del nums, sorted_nums

# 이름과 나이를 가진 사람 객체 리스트를 나이 순으로 정렬하는 예제입니다.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

people = [Person('Alice', 30), Person('Bob', 30), Person('Charlie', 25), Person('Alice', 20)]
people.sort(key=lambda person: person.age)
for person in people:
    print(person.name, person.age)
del Person, people

# 나이가 같으면 이름으로 추가 정렬하는 예제입니다.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

people = [Person('Alice', 20), Person('Bob', 30), Person('Charlie', 25), Person('David', 25), Person('Alice', 25)]
people.sort(key=lambda person: (person.age, person.name))
for person in people:
    print(person.name, person.age)
del Person, people

# 이름이 같으면 나이가 큰 순으로 정렬하는 예제입니다.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

people = [Person('Alice', 20), Person('Bob', 30), Person('Charlie', 25), Person('Alice', 25)]
people.sort(key=lambda person: (person.name, -person.age))
for person in people:
    print(person.name, person.age)
del Person, people

# 나이로 먼저 정렬하고, 나이가 같으면 이름의 알파벳 역순으로 정렬하는 예제입니다.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

people = [Person('Alice', 20), Person('Bob', 30), Person('Charlie', 25), Person('David', 25), Person('Alice', 25)]
people.sort(key=lambda person: person.age)
people.sort(key=lambda person: person.name, reverse=True)
for person in people:
    print(person.name, person.age)
del Person, people

# 나이로 먼저 정렬하고, 나이가 같으면 이름의 알파벳 역순으로 정렬하는 예제입니다.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __lt__(self, other):
        if self.age != other.age:
            return self.age < other.age
        return self.name > other.name  # 나이가 같은 경우, 알파벳 역순으로 정렬합니다.

people = [Person('Alice', 20), Person('Bob', 30), Person('Charlie', 25), Person('David', 25), Person('Alice', 25)]
people.sort()

for person in people:
    print(person.name, person.age)

del Person, people
profile
백엔드 개발자

0개의 댓글