<aside>
💬 lv0
, 정렬
라이캣은 연말 출시할 게임의 게임 난이도를 조절하는 업무를 담당하게 되었습니다. 우선 능력치가 비정상적으로 높은 캐릭터들의 리스트를 뽑고자 합니다. 캐릭터 이름, 공격력, 방어력, 체력, 마력이 리스트로 ['Licat', 98, 30, 21, 60]와 같이 주어졌을 때 모든 능력치의 합이 350 이상이 되는 캐릭터의 이름을 출력하는 solution함수를 완성해주세요.
입력 | 출력 |
---|---|
[['Licat', 98, 92, 85, 97], ['Mura', 95, 32, 51, 30], ['Binky', 98, 98, 51, 32]] | ['Licat'] |
[['Gray', 98, 92, 85, 97], ['Gom', 98, 30, 21, 60], ['Allosa', 98, 90, 99, 98]] | ['Allosa', 'Gary'] |
[['Licat', 98, 92, 85, 97], ['Mura', 95, 32, 51, 30], ['Binky', 98, 98, 51, 32]]이 입력되었을 때 모든 능력치의 합이 350이 넘는 캐릭터는 'Licat'뿐입니다. 'Licat'은 98 + 92 + 85 + 97 = 372로 350이 넘어갑니다. 따라서 'Licat'을 리스트에 담아 출력합니다. 여러명일 경우 알파벳 순으로 정렬하여 출력하여야 합니다.
</aside>
def solution(data):
return sorted([i[0] for i in data if sum(i[1:]) >= 350]) **#1 정렬리스트**
**#2 리스트컴프리헨션**
정렬리스트
이 코드는 입력 데이터에서 능력치 합이 350 이상인 캐릭터의 이름을 찾아서 정렬된 리스트로 반환합니다.
리스트 컴프리헨션
능력치 합이 350 이상인 캐릭터의 이름을 한 번에 추출합니다. 이후에는 결과를 정렬하여 반환하므로 효율적입니다.
리스트 컴프리헨션
기본 형태: [표현식 for 항목 in iterable if 조건식]
개념: 리스트 컴프리헨션은 파이썬에서 리스트를 간결하게 생성하는 방법 중 하나입니다. 이는 for 루프를 사용하여 리스트를 생성하는 것과 유사하지만 더 간단하고 가독성이 좋습니다.
# 리스트 컴프리헨션을 사용하여 리스트 생성
numbers = [x for x in range(10) if x % 2 == 0]
print(numbers) # 출력: [0, 2, 4, 6, 8]
def solution(data):
filtered_list = list(filter(lambda x: x[1]+x[2]+x[3]+x[4] >= 350, data)) **#1 filter**
sorted_list = sorted([i[0] for i in filtered_list])
return sorted_list
filter()
함수
필터링된 결과를 정렬하여 반환합니다. 리스트 컴프리헨션을 사용하는 방법과는 다르게 filter()
함수를 사용하여 특정 조건을 충족하는 항목을 찾는 방법을 사용합니다.
filter() 함수
기본 형태: filter(function, iterable)
개념: filter()
함수는 주어진 이터러블(시퀀스)에서 조건을 만족하는 요소만 걸러내어 새로운 이터러블을 반환합니다. 주어진 함수(function)가 참(True)을 반환하는 요소만 포함됩니다.
# filter 함수를 사용하여 짝수만 필터링
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)