<aside> 💬 lv0, 정렬

게임 밸런스 조절

문제 설명

Untitled

라이캣은 연말 출시할 게임의 게임 난이도를 조절하는 업무를 담당하게 되었습니다. 우선 능력치가 비정상적으로 높은 캐릭터들의 리스트를 뽑고자 합니다. 캐릭터 이름, 공격력, 방어력, 체력, 마력이 리스트로 ['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>

😺 풀이 1. 리스트 컴프리헨션

def solution(data):
    return sorted([i[0] for i in data if sum(i[1:]) >= 350]) **#1 정렬리스트** 
																													   **#2 리스트컴프리헨션**

단계별 풀이 전략

  1. 정렬리스트

    이 코드는 입력 데이터에서 능력치 합이 350 이상인 캐릭터의 이름을 찾아서 정렬된 리스트로 반환합니다.

  2. 리스트 컴프리헨션

    능력치 합이 350 이상인 캐릭터의 이름을 한 번에 추출합니다. 이후에는 결과를 정렬하여 반환하므로 효율적입니다.

알아둬야 할 개념

리스트 컴프리헨션

풀이 2. filter() 함수

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

단계별 풀이 전략

  1. filter() 함수

    필터링된 결과를 정렬하여 반환합니다. 리스트 컴프리헨션을 사용하는 방법과는 다르게 filter() 함수를 사용하여 특정 조건을 충족하는 항목을 찾는 방법을 사용합니다.

알아둬야 할 개념

filter() 함수